{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import pylab as pl\n",
    "import sys\n",
    "sys.path.append(\"../\")\n",
    "\n",
    "import os\n",
    "import datetime\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import polars as pl\n",
    "import polars.selectors as cs\n",
    "import matplotlib\n",
    "from matplotlib import font_manager\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import train_test_split\n",
    "from scorecardpipeline import *\n",
    "\n",
    "\n",
    "logger = init_setting(logger=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><style>\n",
       ".dataframe > thead > tr,\n",
       ".dataframe > tbody > tr {\n",
       "  text-align: right;\n",
       "  white-space: pre-wrap;\n",
       "}\n",
       "</style>\n",
       "<small>shape: (2, 348)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>申请时间</th><th>lhfv3_v1</th><th>lhfv3_v3</th><th>lhfv1_highirr_v6</th><th>lhfv1_lowirr_v6</th><th>lhfv1_tongyong_v6</th><th>lhfv1_highirr_v7</th><th>lhfv1_lowirr_v7</th><th>lhfv1_tongyong_v7</th><th>圈团2风险等级V1</th><th> 疑似准入风险V1</th><th>疑似被电诈V2</th><th>疑似被电诈V3</th><th>圈团1迭代浓度分V2</th><th>圈团3浓度分V1</th><th>疑似准入风险V2</th><th>1周内申请人逾期次数</th><th>1周内申请人逾期平台数</th><th>1个月内申请人逾期次数</th><th>1个月内申请人逾期平台数</th><th>3个月内申请人逾期次数</th><th>3个月内申请人逾期平台数</th><th>6个月内申请人逾期次数</th><th>6个月内申请人逾期平台数</th><th>12个月内申请人逾期次数</th><th>12个月内申请人逾期平台数</th><th>一年以前申请人逾期次数</th><th>一年以前申请人逾期平台数</th><th>1周内申请人逾期银行次数</th><th>1周内申请人逾期银行平台数</th><th>1个月内申请人逾期银行次数</th><th>1个月内申请人逾期银行平台数</th><th>3个月内申请人逾期银行次数</th><th>3个月内申请人逾期银行平台数</th><th>6个月内申请人逾期银行次数</th><th>6个月内申请人逾期银行平台数</th><th>12个月内申请人逾期银行次数</th><th>&hellip;</th><th>720天总申请夜晚平台数</th><th>180天银行申请白天平台数</th><th>360天银行申请白天平台数</th><th>720天银行申请白天平台数</th><th>180天银行申请夜晚平台数</th><th>360天银行申请夜晚平台数</th><th>720天银行申请夜晚平台数</th><th>7天相对过去180天新增总平台数</th><th>7天相对过去360天新增总平台数</th><th>7天相对过去720天新增总平台数</th><th>15天相对过去180天新增总平台数</th><th>15天相对过去360天新增总平台数</th><th>15天相对过去720天新增总平台数</th><th>30天相对过去180天新增总平台数</th><th>30天相对过去360天新增总平台数</th><th>30天相对过去720天新增总平台数</th><th>7天相对过去180天新增银行平台数</th><th>7天相对过去360天新增银行平台数</th><th>7天相对过去720天新增银行平台数</th><th>15天相对过去180天新增银行平台数</th><th>15天相对过去360天新增银行平台数</th><th>15天相对过去720天新增银行平台数</th><th>30天相对过去180天新增银行平台数</th><th>30天相对过去360天新增银行平台数</th><th>30天相对过去720天新增银行平台数</th><th>最早一次查询距今的天数</th><th>最近一次查询距今的天数</th><th>最早一次在银行机构距今的天数</th><th>最近一次在银行机构距今的天数</th><th>最早一次在非银机构距今的天数</th><th>最近一次在非银机构距今的天数</th><th>多头申请通用分</th><th>长周期多头共债子分</th><th>短周期多头共债子分</th><th>非银行多头共债子分</th><th>银行多头共债子分</th><th>target</th></tr><tr><td>datetime[μs]</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f32</td><td>f32</td><td>f64</td><td>f64</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>f32</td><td>&hellip;</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>i8</td></tr></thead><tbody><tr><td>2023-09-28 15:35:48</td><td>734.0</td><td>728.0</td><td>14.0</td><td>13.0</td><td>13.0</td><td>30.0</td><td>27.0</td><td>20.0</td><td>null</td><td>null</td><td>null</td><td>NaN</td><td>37.0</td><td>25.0</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>&hellip;</td><td>0.0</td><td>1.0</td><td>1.0</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-5.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>-1.0</td><td>1206.0</td><td>1.0</td><td>1206.0</td><td>50.0</td><td>905.0</td><td>1.0</td><td>56.0</td><td>51.0</td><td>66.0</td><td>52.0</td><td>54.0</td><td>0</td></tr><tr><td>2023-09-28 18:01:56</td><td>713.0</td><td>655.0</td><td>34.0</td><td>40.0</td><td>34.0</td><td>44.0</td><td>49.0</td><td>41.0</td><td>null</td><td>null</td><td>null</td><td>NaN</td><td>43.0</td><td>15.0</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>&hellip;</td><td>4.0</td><td>0.0</td><td>0.0</td><td>1.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-3.0</td><td>-8.0</td><td>-12.0</td><td>-3.0</td><td>-8.0</td><td>-12.0</td><td>-3.0</td><td>-8.0</td><td>-12.0</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>0.0</td><td>0.0</td><td>-1.0</td><td>1129.0</td><td>51.0</td><td>996.0</td><td>432.0</td><td>1129.0</td><td>51.0</td><td>41.0</td><td>41.0</td><td>44.0</td><td>41.0</td><td>46.0</td><td>0</td></tr></tbody></table></div>"
      ],
      "text/plain": [
       "shape: (2, 348)\n",
       "┌────────────┬──────────┬──────────┬────────────┬───┬────────────┬────────────┬───────────┬────────┐\n",
       "│ 申请时间   ┆ lhfv3_v1 ┆ lhfv3_v3 ┆ lhfv1_high ┆ … ┆ 短周期多头 ┆ 非银行多头 ┆ 银行多头  ┆ target │\n",
       "│ ---        ┆ ---      ┆ ---      ┆ irr_v6     ┆   ┆ 共债子分   ┆ 共债子分   ┆ 共债子分  ┆ ---    │\n",
       "│ datetime[μ ┆ f64      ┆ f64      ┆ ---        ┆   ┆ ---        ┆ ---        ┆ ---       ┆ i8     │\n",
       "│ s]         ┆          ┆          ┆ f64        ┆   ┆ f64        ┆ f64        ┆ f64       ┆        │\n",
       "╞════════════╪══════════╪══════════╪════════════╪═══╪════════════╪════════════╪═══════════╪════════╡\n",
       "│ 2023-09-28 ┆ 734.0    ┆ 728.0    ┆ 14.0       ┆ … ┆ 66.0       ┆ 52.0       ┆ 54.0      ┆ 0      │\n",
       "│ 15:35:48   ┆          ┆          ┆            ┆   ┆            ┆            ┆           ┆        │\n",
       "│ 2023-09-28 ┆ 713.0    ┆ 655.0    ┆ 34.0       ┆ … ┆ 44.0       ┆ 41.0       ┆ 46.0      ┆ 0      │\n",
       "│ 18:01:56   ┆          ┆          ┆            ┆   ┆            ┆            ┆           ┆        │\n",
       "└────────────┴──────────┴──────────┴────────────┴───┴────────────┴────────────┴───────────┴────────┘"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = load_pickle(\"model_dataset.pickle\")\n",
    "data = data.with_columns(\n",
    "    (pl.col(\"FPD\") > 7).cast(pl.Int8).alias(\"target\"),\n",
    "    pl.col(\"申请时间\").str.to_datetime(),\n",
    ").filter(\n",
    "    (pl.col(\"FPD\") > 7) | (pl.col(\"FPD\") == 0),\n",
    ").select(\n",
    "    ~cs.by_name('订单编号','客户编号','授信资方','放款时间','FPD','FSPD','FSTPD','DPD'),\n",
    ")\n",
    "data.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "train = data.filter(pl.col(\"申请时间\") > datetime.datetime(year=2023, month=9, day=1))\n",
    "train, test = train_test_split(train, test_size=0.2, stratify=train[\"target\"])\n",
    "oot = data.filter(pl.col(\"申请时间\") <= datetime.datetime(year=2023, month=9, day=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Checking whether there is an H2O instance running at http://localhost:54321. connected.\n",
      "Warning: Your H2O cluster version is (5 months and 29 days) old.  There may be a newer version available.\n",
      "Please download and install the latest version from: https://h2o-release.s3.amazonaws.com/h2o/latest_stable.html\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "\n",
       "#h2o-table-1.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-1 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-1 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-1 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-1 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-1 .h2o-table th,\n",
       "#h2o-table-1 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-1 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-1\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption></caption>\n",
       "    <thead></thead>\n",
       "    <tbody><tr><td>H2O_cluster_uptime:</td>\n",
       "<td>21 hours 13 mins</td></tr>\n",
       "<tr><td>H2O_cluster_timezone:</td>\n",
       "<td>Asia/Shanghai</td></tr>\n",
       "<tr><td>H2O_data_parsing_timezone:</td>\n",
       "<td>UTC</td></tr>\n",
       "<tr><td>H2O_cluster_version:</td>\n",
       "<td>3.44.0.1</td></tr>\n",
       "<tr><td>H2O_cluster_version_age:</td>\n",
       "<td>5 months and 29 days</td></tr>\n",
       "<tr><td>H2O_cluster_name:</td>\n",
       "<td>H2O_from_python_lubberit_d840sg</td></tr>\n",
       "<tr><td>H2O_cluster_total_nodes:</td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O_cluster_free_memory:</td>\n",
       "<td>2.739 Gb</td></tr>\n",
       "<tr><td>H2O_cluster_total_cores:</td>\n",
       "<td>16</td></tr>\n",
       "<tr><td>H2O_cluster_allowed_cores:</td>\n",
       "<td>16</td></tr>\n",
       "<tr><td>H2O_cluster_status:</td>\n",
       "<td>locked, healthy</td></tr>\n",
       "<tr><td>H2O_connection_url:</td>\n",
       "<td>http://localhost:54321</td></tr>\n",
       "<tr><td>H2O_connection_proxy:</td>\n",
       "<td>{\"http\": null, \"https\": null}</td></tr>\n",
       "<tr><td>H2O_internal_security:</td>\n",
       "<td>False</td></tr>\n",
       "<tr><td>Python_version:</td>\n",
       "<td>3.8.8 final</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n"
      ],
      "text/plain": [
       "--------------------------  -------------------------------\n",
       "H2O_cluster_uptime:         21 hours 13 mins\n",
       "H2O_cluster_timezone:       Asia/Shanghai\n",
       "H2O_data_parsing_timezone:  UTC\n",
       "H2O_cluster_version:        3.44.0.1\n",
       "H2O_cluster_version_age:    5 months and 29 days\n",
       "H2O_cluster_name:           H2O_from_python_lubberit_d840sg\n",
       "H2O_cluster_total_nodes:    1\n",
       "H2O_cluster_free_memory:    2.739 Gb\n",
       "H2O_cluster_total_cores:    16\n",
       "H2O_cluster_allowed_cores:  16\n",
       "H2O_cluster_status:         locked, healthy\n",
       "H2O_connection_url:         http://localhost:54321\n",
       "H2O_connection_proxy:       {\"http\": null, \"https\": null}\n",
       "H2O_internal_security:      False\n",
       "Python_version:             3.8.8 final\n",
       "--------------------------  -------------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import h2o\n",
    "from h2o.automl import H2OAutoML\n",
    "h2o.init()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[INFO] filtering variables ...\n",
      "Variable filtering on 95778 rows and 348 columns in 00:00:30 \n",
      "186 variables are removed\n",
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n",
      "Parse progress: |████████████████████████████████████████████████████████████████| (done) 100%\n"
     ]
    }
   ],
   "source": [
    "select = FeatureSelection(target=\"target\", engine=\"scorecardpy\", identical=0.95, empty=0.95, iv=0.02, corr=0.9, remove=\"申请时间\")\n",
    "select.fit(train.to_pandas())\n",
    "\n",
    "train_select = h2o.H2OFrame(select.transform(train).to_pandas())\n",
    "test_select = h2o.H2OFrame(select.transform(test).to_pandas())\n",
    "oot_select = h2o.H2OFrame(select.transform(oot).to_pandas())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "y = \"target\"\n",
    "x = list(train_select.drop(y).columns)\n",
    "\n",
    "# For binary classification, response should be a factor\n",
    "train_select[y] = train_select[y].asfactor()\n",
    "test_select[y] = test_select[y].asfactor()\n",
    "oot_select[y] = oot_select[y].asfactor()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AutoML progress: |\n",
      "22:44:26.323: User specified a validation frame with cross-validation still enabled. Please note that the models will still be validated using cross-validation only, the validation frame will be used to provide purely informative validation metrics on the trained models.\n",
      "\n",
      "███████████████████████████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<pre style='margin: 1em 0 1em 0;'>Model Details\n",
       "=============\n",
       "H2OStackedEnsembleEstimator : Stacked Ensemble\n",
       "Model Key: StackedEnsemble_BestOfFamily_1_AutoML_10_20240414_224426\n",
       "</pre>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-35.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-35 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-35 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-35 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-35 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-35 .h2o-table th,\n",
       "#h2o-table-35 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-35 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-35\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Model Summary for Stacked Ensemble: </caption>\n",
       "    <thead><tr><th>key</th>\n",
       "<th>value</th></tr></thead>\n",
       "    <tbody><tr><td>Stacking strategy</td>\n",
       "<td>cross_validation</td></tr>\n",
       "<tr><td>Number of base models (used / total)</td>\n",
       "<td>2/2</td></tr>\n",
       "<tr><td># GBM base models (used / total)</td>\n",
       "<td>1/1</td></tr>\n",
       "<tr><td># XGBoost base models (used / total)</td>\n",
       "<td>1/1</td></tr>\n",
       "<tr><td>Metalearner algorithm</td>\n",
       "<td>GLM</td></tr>\n",
       "<tr><td>Metalearner fold assignment scheme</td>\n",
       "<td>Random</td></tr>\n",
       "<tr><td>Metalearner nfolds</td>\n",
       "<td>5</td></tr>\n",
       "<tr><td>Metalearner fold_column</td>\n",
       "<td>None</td></tr>\n",
       "<tr><td>Custom metalearner hyperparameters</td>\n",
       "<td>None</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'><pre style='margin: 1em 0 1em 0;'>ModelMetricsBinomialGLM: stackedensemble\n",
       "** Reported on train data. **\n",
       "\n",
       "MSE: 0.014732754309517466\n",
       "RMSE: 0.1213785578655368\n",
       "LogLoss: 0.0722913786476122\n",
       "AUC: 0.9692753119443059\n",
       "AUCPR: 0.520746595774342\n",
       "Gini: 0.9385506238886119\n",
       "Null degrees of freedom: 10024\n",
       "Residual degrees of freedom: 10022\n",
       "Null deviance: 1649.8242864782364\n",
       "Residual deviance: 1449.4421418846246\n",
       "AIC: 1455.4421418846246</pre>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-36.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-36 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-36 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-36 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-36 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-36 .h2o-table th,\n",
       "#h2o-table-36 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-36 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-36\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.07301502446418714</caption>\n",
       "    <thead><tr><th></th>\n",
       "<th>0</th>\n",
       "<th>1</th>\n",
       "<th>Error</th>\n",
       "<th>Rate</th></tr></thead>\n",
       "    <tbody><tr><td>0</td>\n",
       "<td>9825.0</td>\n",
       "<td>39.0</td>\n",
       "<td>0.004</td>\n",
       "<td> (39.0/9864.0)</td></tr>\n",
       "<tr><td>1</td>\n",
       "<td>92.0</td>\n",
       "<td>69.0</td>\n",
       "<td>0.5714</td>\n",
       "<td> (92.0/161.0)</td></tr>\n",
       "<tr><td>Total</td>\n",
       "<td>9917.0</td>\n",
       "<td>108.0</td>\n",
       "<td>0.0131</td>\n",
       "<td> (131.0/10025.0)</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-37.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-37 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-37 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-37 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-37 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-37 .h2o-table th,\n",
       "#h2o-table-37 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-37 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-37\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Maximum Metrics: Maximum metrics at their respective thresholds</caption>\n",
       "    <thead><tr><th>metric</th>\n",
       "<th>threshold</th>\n",
       "<th>value</th>\n",
       "<th>idx</th></tr></thead>\n",
       "    <tbody><tr><td>max f1</td>\n",
       "<td>0.0730150</td>\n",
       "<td>0.5130112</td>\n",
       "<td>61.0</td></tr>\n",
       "<tr><td>max f2</td>\n",
       "<td>0.0535493</td>\n",
       "<td>0.5829146</td>\n",
       "<td>108.0</td></tr>\n",
       "<tr><td>max f0point5</td>\n",
       "<td>0.0762220</td>\n",
       "<td>0.5865922</td>\n",
       "<td>57.0</td></tr>\n",
       "<tr><td>max accuracy</td>\n",
       "<td>0.0762220</td>\n",
       "<td>0.9871322</td>\n",
       "<td>57.0</td></tr>\n",
       "<tr><td>max precision</td>\n",
       "<td>0.1870312</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max recall</td>\n",
       "<td>0.0254029</td>\n",
       "<td>1.0</td>\n",
       "<td>299.0</td></tr>\n",
       "<tr><td>max specificity</td>\n",
       "<td>0.1870312</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max absolute_mcc</td>\n",
       "<td>0.0730150</td>\n",
       "<td>0.5170535</td>\n",
       "<td>61.0</td></tr>\n",
       "<tr><td>max min_per_class_accuracy</td>\n",
       "<td>0.0418811</td>\n",
       "<td>0.9130435</td>\n",
       "<td>162.0</td></tr>\n",
       "<tr><td>max mean_per_class_accuracy</td>\n",
       "<td>0.0418811</td>\n",
       "<td>0.9143989</td>\n",
       "<td>162.0</td></tr>\n",
       "<tr><td>max tns</td>\n",
       "<td>0.1870312</td>\n",
       "<td>9864.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fns</td>\n",
       "<td>0.1870312</td>\n",
       "<td>160.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fps</td>\n",
       "<td>0.0128539</td>\n",
       "<td>9864.0</td>\n",
       "<td>399.0</td></tr>\n",
       "<tr><td>max tps</td>\n",
       "<td>0.0254029</td>\n",
       "<td>161.0</td>\n",
       "<td>299.0</td></tr>\n",
       "<tr><td>max tnr</td>\n",
       "<td>0.1870312</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fnr</td>\n",
       "<td>0.1870312</td>\n",
       "<td>0.9937888</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fpr</td>\n",
       "<td>0.0128539</td>\n",
       "<td>1.0</td>\n",
       "<td>399.0</td></tr>\n",
       "<tr><td>max tpr</td>\n",
       "<td>0.0254029</td>\n",
       "<td>1.0</td>\n",
       "<td>299.0</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-38.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-38 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-38 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-38 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-38 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-38 .h2o-table th,\n",
       "#h2o-table-38 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-38 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-38\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Gains/Lift Table: Avg response rate:  1.61 %, avg score:  2.98 %</caption>\n",
       "    <thead><tr><th>group</th>\n",
       "<th>cumulative_data_fraction</th>\n",
       "<th>lower_threshold</th>\n",
       "<th>lift</th>\n",
       "<th>cumulative_lift</th>\n",
       "<th>response_rate</th>\n",
       "<th>score</th>\n",
       "<th>cumulative_response_rate</th>\n",
       "<th>cumulative_score</th>\n",
       "<th>capture_rate</th>\n",
       "<th>cumulative_capture_rate</th>\n",
       "<th>gain</th>\n",
       "<th>cumulative_gain</th>\n",
       "<th>kolmogorov_smirnov</th></tr></thead>\n",
       "    <tbody><tr><td>1</td>\n",
       "<td>0.0100748</td>\n",
       "<td>0.0744059</td>\n",
       "<td>40.6893795</td>\n",
       "<td>40.6893795</td>\n",
       "<td>0.6534653</td>\n",
       "<td>0.0974563</td>\n",
       "<td>0.6534653</td>\n",
       "<td>0.0974563</td>\n",
       "<td>0.4099379</td>\n",
       "<td>0.4099379</td>\n",
       "<td>3968.9379497</td>\n",
       "<td>3968.9379497</td>\n",
       "<td>0.4063896</td></tr>\n",
       "<tr><td>2</td>\n",
       "<td>0.0200499</td>\n",
       "<td>0.0616542</td>\n",
       "<td>11.8307453</td>\n",
       "<td>26.3318501</td>\n",
       "<td>0.19</td>\n",
       "<td>0.0665947</td>\n",
       "<td>0.4228856</td>\n",
       "<td>0.0821023</td>\n",
       "<td>0.1180124</td>\n",
       "<td>0.5279503</td>\n",
       "<td>1083.0745342</td>\n",
       "<td>2533.1850066</td>\n",
       "<td>0.5161904</td></tr>\n",
       "<tr><td>3</td>\n",
       "<td>0.0300249</td>\n",
       "<td>0.0551544</td>\n",
       "<td>13.6987578</td>\n",
       "<td>22.1348094</td>\n",
       "<td>0.22</td>\n",
       "<td>0.0582598</td>\n",
       "<td>0.3554817</td>\n",
       "<td>0.0741812</td>\n",
       "<td>0.1366460</td>\n",
       "<td>0.6645963</td>\n",
       "<td>1269.8757764</td>\n",
       "<td>2113.4809434</td>\n",
       "<td>0.6449288</td></tr>\n",
       "<tr><td>4</td>\n",
       "<td>0.04</td>\n",
       "<td>0.0515555</td>\n",
       "<td>8.0947205</td>\n",
       "<td>18.6335404</td>\n",
       "<td>0.13</td>\n",
       "<td>0.0534135</td>\n",
       "<td>0.2992519</td>\n",
       "<td>0.0690022</td>\n",
       "<td>0.0807453</td>\n",
       "<td>0.7453416</td>\n",
       "<td>709.4720497</td>\n",
       "<td>1763.3540373</td>\n",
       "<td>0.7168542</td></tr>\n",
       "<tr><td>5</td>\n",
       "<td>0.0500748</td>\n",
       "<td>0.0487682</td>\n",
       "<td>6.7815632</td>\n",
       "<td>16.2489792</td>\n",
       "<td>0.1089109</td>\n",
       "<td>0.0502283</td>\n",
       "<td>0.2609562</td>\n",
       "<td>0.0652250</td>\n",
       "<td>0.0683230</td>\n",
       "<td>0.8136646</td>\n",
       "<td>578.1563249</td>\n",
       "<td>1524.8979238</td>\n",
       "<td>0.7760531</td></tr>\n",
       "<tr><td>6</td>\n",
       "<td>0.1000499</td>\n",
       "<td>0.0416220</td>\n",
       "<td>1.9885694</td>\n",
       "<td>9.1258832</td>\n",
       "<td>0.0319361</td>\n",
       "<td>0.0445667</td>\n",
       "<td>0.1465603</td>\n",
       "<td>0.0549062</td>\n",
       "<td>0.0993789</td>\n",
       "<td>0.9130435</td>\n",
       "<td>98.8569445</td>\n",
       "<td>812.5883220</td>\n",
       "<td>0.8262633</td></tr>\n",
       "<tr><td>7</td>\n",
       "<td>0.1500249</td>\n",
       "<td>0.0381586</td>\n",
       "<td>0.7457135</td>\n",
       "<td>6.3343506</td>\n",
       "<td>0.0119760</td>\n",
       "<td>0.0397336</td>\n",
       "<td>0.1017287</td>\n",
       "<td>0.0498520</td>\n",
       "<td>0.0372671</td>\n",
       "<td>0.9503106</td>\n",
       "<td>-25.4286458</td>\n",
       "<td>533.4350634</td>\n",
       "<td>0.8133479</td></tr>\n",
       "<tr><td>8</td>\n",
       "<td>0.2</td>\n",
       "<td>0.0354292</td>\n",
       "<td>0.2485712</td>\n",
       "<td>4.8136646</td>\n",
       "<td>0.0039920</td>\n",
       "<td>0.0367419</td>\n",
       "<td>0.0773067</td>\n",
       "<td>0.0465761</td>\n",
       "<td>0.0124224</td>\n",
       "<td>0.9627329</td>\n",
       "<td>-75.1428819</td>\n",
       "<td>381.3664596</td>\n",
       "<td>0.7751822</td></tr>\n",
       "<tr><td>9</td>\n",
       "<td>0.3000499</td>\n",
       "<td>0.0320839</td>\n",
       "<td>0.2483234</td>\n",
       "<td>3.2913783</td>\n",
       "<td>0.0039880</td>\n",
       "<td>0.0336374</td>\n",
       "<td>0.0528590</td>\n",
       "<td>0.0422618</td>\n",
       "<td>0.0248447</td>\n",
       "<td>0.9875776</td>\n",
       "<td>-75.1676647</td>\n",
       "<td>229.1378271</td>\n",
       "<td>0.6987496</td></tr>\n",
       "<tr><td>10</td>\n",
       "<td>0.4</td>\n",
       "<td>0.0296056</td>\n",
       "<td>0.0621428</td>\n",
       "<td>2.4844720</td>\n",
       "<td>0.0009980</td>\n",
       "<td>0.0307968</td>\n",
       "<td>0.0399002</td>\n",
       "<td>0.0393970</td>\n",
       "<td>0.0062112</td>\n",
       "<td>0.9937888</td>\n",
       "<td>-93.7857205</td>\n",
       "<td>148.4472050</td>\n",
       "<td>0.6034806</td></tr>\n",
       "<tr><td>11</td>\n",
       "<td>0.5000499</td>\n",
       "<td>0.0275032</td>\n",
       "<td>0.0</td>\n",
       "<td>1.9873794</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0285132</td>\n",
       "<td>0.0319170</td>\n",
       "<td>0.0372193</td>\n",
       "<td>0.0</td>\n",
       "<td>0.9937888</td>\n",
       "<td>-100.0</td>\n",
       "<td>98.7379397</td>\n",
       "<td>0.5017977</td></tr>\n",
       "<tr><td>12</td>\n",
       "<td>0.6</td>\n",
       "<td>0.0256556</td>\n",
       "<td>0.0</td>\n",
       "<td>1.6563147</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0265948</td>\n",
       "<td>0.0266002</td>\n",
       "<td>0.0354495</td>\n",
       "<td>0.0</td>\n",
       "<td>0.9937888</td>\n",
       "<td>-100.0</td>\n",
       "<td>65.6314700</td>\n",
       "<td>0.4002162</td></tr>\n",
       "<tr><td>13</td>\n",
       "<td>0.6999501</td>\n",
       "<td>0.0238115</td>\n",
       "<td>0.0621428</td>\n",
       "<td>1.4286732</td>\n",
       "<td>0.0009980</td>\n",
       "<td>0.0247438</td>\n",
       "<td>0.0229443</td>\n",
       "<td>0.0339207</td>\n",
       "<td>0.0062112</td>\n",
       "<td>1.0</td>\n",
       "<td>-93.7857205</td>\n",
       "<td>42.8673222</td>\n",
       "<td>0.3049473</td></tr>\n",
       "<tr><td>14</td>\n",
       "<td>0.8</td>\n",
       "<td>0.0217162</td>\n",
       "<td>0.0</td>\n",
       "<td>1.25</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0227909</td>\n",
       "<td>0.0200748</td>\n",
       "<td>0.0325288</td>\n",
       "<td>0.0</td>\n",
       "<td>1.0</td>\n",
       "<td>-100.0</td>\n",
       "<td>25.0</td>\n",
       "<td>0.2032644</td></tr>\n",
       "<tr><td>15</td>\n",
       "<td>0.8999501</td>\n",
       "<td>0.0191074</td>\n",
       "<td>0.0</td>\n",
       "<td>1.1111727</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0204333</td>\n",
       "<td>0.0178453</td>\n",
       "<td>0.0311855</td>\n",
       "<td>0.0</td>\n",
       "<td>1.0</td>\n",
       "<td>-100.0</td>\n",
       "<td>11.1172689</td>\n",
       "<td>0.1016829</td></tr>\n",
       "<tr><td>16</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0128539</td>\n",
       "<td>0.0</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0170979</td>\n",
       "<td>0.0160599</td>\n",
       "<td>0.0297760</td>\n",
       "<td>0.0</td>\n",
       "<td>1.0</td>\n",
       "<td>-100.0</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div></div>\n",
       "<div style='margin: 1em 0 1em 0;'><pre style='margin: 1em 0 1em 0;'>ModelMetricsBinomialGLM: stackedensemble\n",
       "** Reported on validation data. **\n",
       "\n",
       "MSE: 0.015551263033921004\n",
       "RMSE: 0.12470470333520306\n",
       "LogLoss: 0.08323480175771274\n",
       "AUC: 0.615829274501485\n",
       "AUCPR: 0.030103741931861692\n",
       "Gini: 0.2316585490029699\n",
       "Null degrees of freedom: 23944\n",
       "Residual degrees of freedom: 23942\n",
       "Null deviance: 3861.537856416843\n",
       "Residual deviance: 3986.114656176863\n",
       "AIC: 3992.114656176863</pre>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-39.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-39 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-39 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-39 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-39 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-39 .h2o-table th,\n",
       "#h2o-table-39 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-39 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-39\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.06180198067132455</caption>\n",
       "    <thead><tr><th></th>\n",
       "<th>0</th>\n",
       "<th>1</th>\n",
       "<th>Error</th>\n",
       "<th>Rate</th></tr></thead>\n",
       "    <tbody><tr><td>0</td>\n",
       "<td>23220.0</td>\n",
       "<td>350.0</td>\n",
       "<td>0.0148</td>\n",
       "<td> (350.0/23570.0)</td></tr>\n",
       "<tr><td>1</td>\n",
       "<td>347.0</td>\n",
       "<td>28.0</td>\n",
       "<td>0.9253</td>\n",
       "<td> (347.0/375.0)</td></tr>\n",
       "<tr><td>Total</td>\n",
       "<td>23567.0</td>\n",
       "<td>378.0</td>\n",
       "<td>0.0291</td>\n",
       "<td> (697.0/23945.0)</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-40.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-40 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-40 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-40 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-40 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-40 .h2o-table th,\n",
       "#h2o-table-40 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-40 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-40\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Maximum Metrics: Maximum metrics at their respective thresholds</caption>\n",
       "    <thead><tr><th>metric</th>\n",
       "<th>threshold</th>\n",
       "<th>value</th>\n",
       "<th>idx</th></tr></thead>\n",
       "    <tbody><tr><td>max f1</td>\n",
       "<td>0.0618020</td>\n",
       "<td>0.0743692</td>\n",
       "<td>72.0</td></tr>\n",
       "<tr><td>max f2</td>\n",
       "<td>0.0325279</td>\n",
       "<td>0.1024373</td>\n",
       "<td>222.0</td></tr>\n",
       "<tr><td>max f0point5</td>\n",
       "<td>0.0618020</td>\n",
       "<td>0.0741918</td>\n",
       "<td>72.0</td></tr>\n",
       "<tr><td>max accuracy</td>\n",
       "<td>0.1561477</td>\n",
       "<td>0.9843391</td>\n",
       "<td>1.0</td></tr>\n",
       "<tr><td>max precision</td>\n",
       "<td>0.1561477</td>\n",
       "<td>0.5</td>\n",
       "<td>1.0</td></tr>\n",
       "<tr><td>max recall</td>\n",
       "<td>0.0142671</td>\n",
       "<td>1.0</td>\n",
       "<td>394.0</td></tr>\n",
       "<tr><td>max specificity</td>\n",
       "<td>0.1726307</td>\n",
       "<td>0.9999576</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max absolute_mcc</td>\n",
       "<td>0.0618020</td>\n",
       "<td>0.0595832</td>\n",
       "<td>72.0</td></tr>\n",
       "<tr><td>max min_per_class_accuracy</td>\n",
       "<td>0.0292724</td>\n",
       "<td>0.5806109</td>\n",
       "<td>254.0</td></tr>\n",
       "<tr><td>max mean_per_class_accuracy</td>\n",
       "<td>0.0314859</td>\n",
       "<td>0.5882780</td>\n",
       "<td>232.0</td></tr>\n",
       "<tr><td>max tns</td>\n",
       "<td>0.1726307</td>\n",
       "<td>23569.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fns</td>\n",
       "<td>0.1726307</td>\n",
       "<td>375.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fps</td>\n",
       "<td>0.0130710</td>\n",
       "<td>23570.0</td>\n",
       "<td>399.0</td></tr>\n",
       "<tr><td>max tps</td>\n",
       "<td>0.0142671</td>\n",
       "<td>375.0</td>\n",
       "<td>394.0</td></tr>\n",
       "<tr><td>max tnr</td>\n",
       "<td>0.1726307</td>\n",
       "<td>0.9999576</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fnr</td>\n",
       "<td>0.1726307</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fpr</td>\n",
       "<td>0.0130710</td>\n",
       "<td>1.0</td>\n",
       "<td>399.0</td></tr>\n",
       "<tr><td>max tpr</td>\n",
       "<td>0.0142671</td>\n",
       "<td>1.0</td>\n",
       "<td>394.0</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-41.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-41 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-41 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-41 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-41 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-41 .h2o-table th,\n",
       "#h2o-table-41 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-41 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-41\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Gains/Lift Table: Avg response rate:  1.57 %, avg score:  2.96 %</caption>\n",
       "    <thead><tr><th>group</th>\n",
       "<th>cumulative_data_fraction</th>\n",
       "<th>lower_threshold</th>\n",
       "<th>lift</th>\n",
       "<th>cumulative_lift</th>\n",
       "<th>response_rate</th>\n",
       "<th>score</th>\n",
       "<th>cumulative_response_rate</th>\n",
       "<th>cumulative_score</th>\n",
       "<th>capture_rate</th>\n",
       "<th>cumulative_capture_rate</th>\n",
       "<th>gain</th>\n",
       "<th>cumulative_gain</th>\n",
       "<th>kolmogorov_smirnov</th></tr></thead>\n",
       "    <tbody><tr><td>1</td>\n",
       "<td>0.0100230</td>\n",
       "<td>0.0662708</td>\n",
       "<td>4.5229444</td>\n",
       "<td>4.5229444</td>\n",
       "<td>0.0708333</td>\n",
       "<td>0.0801566</td>\n",
       "<td>0.0708333</td>\n",
       "<td>0.0801566</td>\n",
       "<td>0.0453333</td>\n",
       "<td>0.0453333</td>\n",
       "<td>352.2944444</td>\n",
       "<td>352.2944444</td>\n",
       "<td>0.0358722</td></tr>\n",
       "<tr><td>2</td>\n",
       "<td>0.0200042</td>\n",
       "<td>0.0584993</td>\n",
       "<td>2.9388563</td>\n",
       "<td>3.7325539</td>\n",
       "<td>0.0460251</td>\n",
       "<td>0.0623005</td>\n",
       "<td>0.0584551</td>\n",
       "<td>0.0712472</td>\n",
       "<td>0.0293333</td>\n",
       "<td>0.0746667</td>\n",
       "<td>193.8856346</td>\n",
       "<td>273.2553932</td>\n",
       "<td>0.0555322</td></tr>\n",
       "<tr><td>3</td>\n",
       "<td>0.0300271</td>\n",
       "<td>0.0538876</td>\n",
       "<td>1.0642222</td>\n",
       "<td>2.8418730</td>\n",
       "<td>0.0166667</td>\n",
       "<td>0.0559440</td>\n",
       "<td>0.0445063</td>\n",
       "<td>0.0661390</td>\n",
       "<td>0.0106667</td>\n",
       "<td>0.0853333</td>\n",
       "<td>6.4222222</td>\n",
       "<td>184.1872972</td>\n",
       "<td>0.0561861</td></tr>\n",
       "<tr><td>4</td>\n",
       "<td>0.0400084</td>\n",
       "<td>0.0508933</td>\n",
       "<td>1.8701813</td>\n",
       "<td>2.5994572</td>\n",
       "<td>0.0292887</td>\n",
       "<td>0.0524194</td>\n",
       "<td>0.0407098</td>\n",
       "<td>0.0627163</td>\n",
       "<td>0.0186667</td>\n",
       "<td>0.104</td>\n",
       "<td>87.0181311</td>\n",
       "<td>159.9457203</td>\n",
       "<td>0.0650098</td></tr>\n",
       "<tr><td>5</td>\n",
       "<td>0.0500313</td>\n",
       "<td>0.0486582</td>\n",
       "<td>0.5321111</td>\n",
       "<td>2.1852977</td>\n",
       "<td>0.0083333</td>\n",
       "<td>0.0497459</td>\n",
       "<td>0.0342237</td>\n",
       "<td>0.0601179</td>\n",
       "<td>0.0053333</td>\n",
       "<td>0.1093333</td>\n",
       "<td>-46.7888889</td>\n",
       "<td>118.5297718</td>\n",
       "<td>0.0602455</td></tr>\n",
       "<tr><td>6</td>\n",
       "<td>0.1000209</td>\n",
       "<td>0.0417889</td>\n",
       "<td>1.6003342</td>\n",
       "<td>1.8929381</td>\n",
       "<td>0.0250627</td>\n",
       "<td>0.0447789</td>\n",
       "<td>0.0296451</td>\n",
       "<td>0.0524516</td>\n",
       "<td>0.08</td>\n",
       "<td>0.1893333</td>\n",
       "<td>60.0334169</td>\n",
       "<td>89.2938065</td>\n",
       "<td>0.0907334</td></tr>\n",
       "<tr><td>7</td>\n",
       "<td>0.1500104</td>\n",
       "<td>0.0383292</td>\n",
       "<td>1.4936452</td>\n",
       "<td>1.7598775</td>\n",
       "<td>0.0233918</td>\n",
       "<td>0.0399461</td>\n",
       "<td>0.0275612</td>\n",
       "<td>0.0482843</td>\n",
       "<td>0.0746667</td>\n",
       "<td>0.264</td>\n",
       "<td>49.3645224</td>\n",
       "<td>75.9877506</td>\n",
       "<td>0.1158031</td></tr>\n",
       "<tr><td>8</td>\n",
       "<td>0.2</td>\n",
       "<td>0.0357324</td>\n",
       "<td>1.2269229</td>\n",
       "<td>1.6266667</td>\n",
       "<td>0.0192147</td>\n",
       "<td>0.0369589</td>\n",
       "<td>0.0254750</td>\n",
       "<td>0.0454535</td>\n",
       "<td>0.0613333</td>\n",
       "<td>0.3253333</td>\n",
       "<td>22.6922863</td>\n",
       "<td>62.6666667</td>\n",
       "<td>0.1273274</td></tr>\n",
       "<tr><td>9</td>\n",
       "<td>0.3000209</td>\n",
       "<td>0.0322649</td>\n",
       "<td>1.4396994</td>\n",
       "<td>1.5643356</td>\n",
       "<td>0.0225470</td>\n",
       "<td>0.0338784</td>\n",
       "<td>0.0244989</td>\n",
       "<td>0.0415946</td>\n",
       "<td>0.144</td>\n",
       "<td>0.4693333</td>\n",
       "<td>43.9699374</td>\n",
       "<td>56.4335561</td>\n",
       "<td>0.1720062</td></tr>\n",
       "<tr><td>10</td>\n",
       "<td>0.4</td>\n",
       "<td>0.0296646</td>\n",
       "<td>0.9335283</td>\n",
       "<td>1.4066667</td>\n",
       "<td>0.0146199</td>\n",
       "<td>0.0308889</td>\n",
       "<td>0.0220297</td>\n",
       "<td>0.0389187</td>\n",
       "<td>0.0933333</td>\n",
       "<td>0.5626667</td>\n",
       "<td>-6.6471735</td>\n",
       "<td>40.6666667</td>\n",
       "<td>0.1652547</td></tr>\n",
       "<tr><td>11</td>\n",
       "<td>0.5000209</td>\n",
       "<td>0.0276373</td>\n",
       "<td>0.9064774</td>\n",
       "<td>1.3066121</td>\n",
       "<td>0.0141962</td>\n",
       "<td>0.0286402</td>\n",
       "<td>0.0204627</td>\n",
       "<td>0.0368627</td>\n",
       "<td>0.0906667</td>\n",
       "<td>0.6533333</td>\n",
       "<td>-9.3522617</td>\n",
       "<td>30.6612099</td>\n",
       "<td>0.1557517</td></tr>\n",
       "<tr><td>12</td>\n",
       "<td>0.6</td>\n",
       "<td>0.0257443</td>\n",
       "<td>1.0135450</td>\n",
       "<td>1.2577778</td>\n",
       "<td>0.0158730</td>\n",
       "<td>0.0266987</td>\n",
       "<td>0.0196979</td>\n",
       "<td>0.0351690</td>\n",
       "<td>0.1013333</td>\n",
       "<td>0.7546667</td>\n",
       "<td>1.3544974</td>\n",
       "<td>25.7777778</td>\n",
       "<td>0.1571274</td></tr>\n",
       "<tr><td>13</td>\n",
       "<td>0.6999791</td>\n",
       "<td>0.0238650</td>\n",
       "<td>0.7201504</td>\n",
       "<td>1.1809876</td>\n",
       "<td>0.0112782</td>\n",
       "<td>0.0248051</td>\n",
       "<td>0.0184953</td>\n",
       "<td>0.0336887</td>\n",
       "<td>0.072</td>\n",
       "<td>0.8266667</td>\n",
       "<td>-27.9849624</td>\n",
       "<td>18.0987610</td>\n",
       "<td>0.1287032</td></tr>\n",
       "<tr><td>14</td>\n",
       "<td>0.8</td>\n",
       "<td>0.0217152</td>\n",
       "<td>0.5865442</td>\n",
       "<td>1.1066667</td>\n",
       "<td>0.0091858</td>\n",
       "<td>0.0228481</td>\n",
       "<td>0.0173314</td>\n",
       "<td>0.0323334</td>\n",
       "<td>0.0586667</td>\n",
       "<td>0.8853333</td>\n",
       "<td>-41.3455811</td>\n",
       "<td>10.6666667</td>\n",
       "<td>0.0866910</td></tr>\n",
       "<tr><td>15</td>\n",
       "<td>0.8999791</td>\n",
       "<td>0.0190535</td>\n",
       "<td>0.7201504</td>\n",
       "<td>1.0637284</td>\n",
       "<td>0.0112782</td>\n",
       "<td>0.0204321</td>\n",
       "<td>0.0166589</td>\n",
       "<td>0.0310113</td>\n",
       "<td>0.072</td>\n",
       "<td>0.9573333</td>\n",
       "<td>-27.9849624</td>\n",
       "<td>6.3728384</td>\n",
       "<td>0.0582667</td></tr>\n",
       "<tr><td>16</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0128441</td>\n",
       "<td>0.4265776</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0066806</td>\n",
       "<td>0.0170485</td>\n",
       "<td>0.0156609</td>\n",
       "<td>0.0296147</td>\n",
       "<td>0.0426667</td>\n",
       "<td>1.0</td>\n",
       "<td>-57.3422408</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div></div>\n",
       "<div style='margin: 1em 0 1em 0;'><pre style='margin: 1em 0 1em 0;'>ModelMetricsBinomialGLM: stackedensemble\n",
       "** Reported on cross-validation data. **\n",
       "\n",
       "MSE: 0.0153677690917643\n",
       "RMSE: 0.12396680641108852\n",
       "LogLoss: 0.07929611252452003\n",
       "AUC: 0.6147189694308322\n",
       "AUCPR: 0.02618197020102293\n",
       "Gini: 0.2294379388616643\n",
       "Null degrees of freedom: 95777\n",
       "Residual degrees of freedom: 95775\n",
       "Null deviance: 15447.231248486467\n",
       "Residual deviance: 15189.646130746956\n",
       "AIC: 15195.646130746956</pre>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-42.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-42 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-42 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-42 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-42 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-42 .h2o-table th,\n",
       "#h2o-table-42 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-42 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-42\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.02454676150565218</caption>\n",
       "    <thead><tr><th></th>\n",
       "<th>0</th>\n",
       "<th>1</th>\n",
       "<th>Error</th>\n",
       "<th>Rate</th></tr></thead>\n",
       "    <tbody><tr><td>0</td>\n",
       "<td>86328.0</td>\n",
       "<td>7950.0</td>\n",
       "<td>0.0843</td>\n",
       "<td> (7950.0/94278.0)</td></tr>\n",
       "<tr><td>1</td>\n",
       "<td>1240.0</td>\n",
       "<td>260.0</td>\n",
       "<td>0.8267</td>\n",
       "<td> (1240.0/1500.0)</td></tr>\n",
       "<tr><td>Total</td>\n",
       "<td>87568.0</td>\n",
       "<td>8210.0</td>\n",
       "<td>0.096</td>\n",
       "<td> (9190.0/95778.0)</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-43.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-43 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-43 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-43 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-43 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-43 .h2o-table th,\n",
       "#h2o-table-43 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-43 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-43\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Maximum Metrics: Maximum metrics at their respective thresholds</caption>\n",
       "    <thead><tr><th>metric</th>\n",
       "<th>threshold</th>\n",
       "<th>value</th>\n",
       "<th>idx</th></tr></thead>\n",
       "    <tbody><tr><td>max f1</td>\n",
       "<td>0.0245468</td>\n",
       "<td>0.0535530</td>\n",
       "<td>165.0</td></tr>\n",
       "<tr><td>max f2</td>\n",
       "<td>0.0176342</td>\n",
       "<td>0.0954986</td>\n",
       "<td>234.0</td></tr>\n",
       "<tr><td>max f0point5</td>\n",
       "<td>0.0392926</td>\n",
       "<td>0.0469982</td>\n",
       "<td>89.0</td></tr>\n",
       "<tr><td>max accuracy</td>\n",
       "<td>0.1987575</td>\n",
       "<td>0.9843492</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max precision</td>\n",
       "<td>0.1987575</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max recall</td>\n",
       "<td>0.0062725</td>\n",
       "<td>1.0</td>\n",
       "<td>393.0</td></tr>\n",
       "<tr><td>max specificity</td>\n",
       "<td>0.1987575</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max absolute_mcc</td>\n",
       "<td>0.0141412</td>\n",
       "<td>0.0431676</td>\n",
       "<td>285.0</td></tr>\n",
       "<tr><td>max min_per_class_accuracy</td>\n",
       "<td>0.0150963</td>\n",
       "<td>0.5786928</td>\n",
       "<td>269.0</td></tr>\n",
       "<tr><td>max mean_per_class_accuracy</td>\n",
       "<td>0.0141412</td>\n",
       "<td>0.5869169</td>\n",
       "<td>285.0</td></tr>\n",
       "<tr><td>max tns</td>\n",
       "<td>0.1987575</td>\n",
       "<td>94278.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fns</td>\n",
       "<td>0.1987575</td>\n",
       "<td>1499.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fps</td>\n",
       "<td>0.0041978</td>\n",
       "<td>94278.0</td>\n",
       "<td>399.0</td></tr>\n",
       "<tr><td>max tps</td>\n",
       "<td>0.0062725</td>\n",
       "<td>1500.0</td>\n",
       "<td>393.0</td></tr>\n",
       "<tr><td>max tnr</td>\n",
       "<td>0.1987575</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fnr</td>\n",
       "<td>0.1987575</td>\n",
       "<td>0.9993333</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>max fpr</td>\n",
       "<td>0.0041978</td>\n",
       "<td>1.0</td>\n",
       "<td>399.0</td></tr>\n",
       "<tr><td>max tpr</td>\n",
       "<td>0.0062725</td>\n",
       "<td>1.0</td>\n",
       "<td>393.0</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-44.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-44 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-44 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-44 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-44 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-44 .h2o-table th,\n",
       "#h2o-table-44 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-44 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-44\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Gains/Lift Table: Avg response rate:  1.57 %, avg score:  1.57 %</caption>\n",
       "    <thead><tr><th>group</th>\n",
       "<th>cumulative_data_fraction</th>\n",
       "<th>lower_threshold</th>\n",
       "<th>lift</th>\n",
       "<th>cumulative_lift</th>\n",
       "<th>response_rate</th>\n",
       "<th>score</th>\n",
       "<th>cumulative_response_rate</th>\n",
       "<th>cumulative_score</th>\n",
       "<th>capture_rate</th>\n",
       "<th>cumulative_capture_rate</th>\n",
       "<th>gain</th>\n",
       "<th>cumulative_gain</th>\n",
       "<th>kolmogorov_smirnov</th></tr></thead>\n",
       "    <tbody><tr><td>1</td>\n",
       "<td>0.0100023</td>\n",
       "<td>0.0418766</td>\n",
       "<td>3.1326138</td>\n",
       "<td>3.1326138</td>\n",
       "<td>0.0490605</td>\n",
       "<td>0.0534118</td>\n",
       "<td>0.0490605</td>\n",
       "<td>0.0534118</td>\n",
       "<td>0.0313333</td>\n",
       "<td>0.0313333</td>\n",
       "<td>213.2613779</td>\n",
       "<td>213.2613779</td>\n",
       "<td>0.0216704</td></tr>\n",
       "<tr><td>2</td>\n",
       "<td>0.0200046</td>\n",
       "<td>0.0355028</td>\n",
       "<td>1.9328894</td>\n",
       "<td>2.5327516</td>\n",
       "<td>0.0302714</td>\n",
       "<td>0.0383074</td>\n",
       "<td>0.0396660</td>\n",
       "<td>0.0458596</td>\n",
       "<td>0.0193333</td>\n",
       "<td>0.0506667</td>\n",
       "<td>93.2889353</td>\n",
       "<td>153.2751566</td>\n",
       "<td>0.0311499</td></tr>\n",
       "<tr><td>3</td>\n",
       "<td>0.0300069</td>\n",
       "<td>0.0321481</td>\n",
       "<td>1.9995407</td>\n",
       "<td>2.3550146</td>\n",
       "<td>0.0313152</td>\n",
       "<td>0.0337554</td>\n",
       "<td>0.0368824</td>\n",
       "<td>0.0418249</td>\n",
       "<td>0.02</td>\n",
       "<td>0.0706667</td>\n",
       "<td>99.9540710</td>\n",
       "<td>135.5014614</td>\n",
       "<td>0.0413067</td></tr>\n",
       "<tr><td>4</td>\n",
       "<td>0.0400092</td>\n",
       "<td>0.0299106</td>\n",
       "<td>2.0661921</td>\n",
       "<td>2.2828090</td>\n",
       "<td>0.0323591</td>\n",
       "<td>0.0309894</td>\n",
       "<td>0.0357516</td>\n",
       "<td>0.0391160</td>\n",
       "<td>0.0206667</td>\n",
       "<td>0.0913333</td>\n",
       "<td>106.6192067</td>\n",
       "<td>128.2808977</td>\n",
       "<td>0.0521407</td></tr>\n",
       "<tr><td>5</td>\n",
       "<td>0.0500010</td>\n",
       "<td>0.0282369</td>\n",
       "<td>1.8681881</td>\n",
       "<td>2.1999541</td>\n",
       "<td>0.0292581</td>\n",
       "<td>0.0290241</td>\n",
       "<td>0.0344540</td>\n",
       "<td>0.0370993</td>\n",
       "<td>0.0186667</td>\n",
       "<td>0.11</td>\n",
       "<td>86.8188088</td>\n",
       "<td>119.9954061</td>\n",
       "<td>0.0609536</td></tr>\n",
       "<tr><td>6</td>\n",
       "<td>0.1000021</td>\n",
       "<td>0.0234834</td>\n",
       "<td>1.5999666</td>\n",
       "<td>1.8999603</td>\n",
       "<td>0.0250574</td>\n",
       "<td>0.0255386</td>\n",
       "<td>0.0297557</td>\n",
       "<td>0.0313190</td>\n",
       "<td>0.08</td>\n",
       "<td>0.19</td>\n",
       "<td>59.9966590</td>\n",
       "<td>89.9960326</td>\n",
       "<td>0.0914298</td></tr>\n",
       "<tr><td>7</td>\n",
       "<td>0.1500031</td>\n",
       "<td>0.0210135</td>\n",
       "<td>1.3333055</td>\n",
       "<td>1.7110754</td>\n",
       "<td>0.0208812</td>\n",
       "<td>0.0221558</td>\n",
       "<td>0.0267975</td>\n",
       "<td>0.0282646</td>\n",
       "<td>0.0666667</td>\n",
       "<td>0.2566667</td>\n",
       "<td>33.3305492</td>\n",
       "<td>71.1075381</td>\n",
       "<td>0.1083606</td></tr>\n",
       "<tr><td>8</td>\n",
       "<td>0.2000042</td>\n",
       "<td>0.0193195</td>\n",
       "<td>1.2399741</td>\n",
       "<td>1.5933001</td>\n",
       "<td>0.0194195</td>\n",
       "<td>0.0201298</td>\n",
       "<td>0.0249530</td>\n",
       "<td>0.0262309</td>\n",
       "<td>0.062</td>\n",
       "<td>0.3186667</td>\n",
       "<td>23.9974107</td>\n",
       "<td>59.3300063</td>\n",
       "<td>0.1205505</td></tr>\n",
       "<tr><td>9</td>\n",
       "<td>0.3000063</td>\n",
       "<td>0.0170178</td>\n",
       "<td>1.1866419</td>\n",
       "<td>1.4577473</td>\n",
       "<td>0.0185843</td>\n",
       "<td>0.0180894</td>\n",
       "<td>0.0228301</td>\n",
       "<td>0.0235171</td>\n",
       "<td>0.1186667</td>\n",
       "<td>0.4373333</td>\n",
       "<td>18.6641888</td>\n",
       "<td>45.7747338</td>\n",
       "<td>0.1395120</td></tr>\n",
       "<tr><td>10</td>\n",
       "<td>0.4000084</td>\n",
       "<td>0.0153927</td>\n",
       "<td>1.1666423</td>\n",
       "<td>1.3849711</td>\n",
       "<td>0.0182710</td>\n",
       "<td>0.0161619</td>\n",
       "<td>0.0216903</td>\n",
       "<td>0.0216783</td>\n",
       "<td>0.1166667</td>\n",
       "<td>0.554</td>\n",
       "<td>16.6642305</td>\n",
       "<td>38.4971080</td>\n",
       "<td>0.1564417</td></tr>\n",
       "<tr><td>11</td>\n",
       "<td>0.5</td>\n",
       "<td>0.0140716</td>\n",
       "<td>1.1600969</td>\n",
       "<td>1.34</td>\n",
       "<td>0.0181685</td>\n",
       "<td>0.0147199</td>\n",
       "<td>0.0209860</td>\n",
       "<td>0.0202867</td>\n",
       "<td>0.116</td>\n",
       "<td>0.67</td>\n",
       "<td>16.0096899</td>\n",
       "<td>34.0000000</td>\n",
       "<td>0.1727048</td></tr>\n",
       "<tr><td>12</td>\n",
       "<td>0.6000021</td>\n",
       "<td>0.0129192</td>\n",
       "<td>0.7933168</td>\n",
       "<td>1.2488845</td>\n",
       "<td>0.0124243</td>\n",
       "<td>0.0134869</td>\n",
       "<td>0.0195591</td>\n",
       "<td>0.0191534</td>\n",
       "<td>0.0793333</td>\n",
       "<td>0.7493333</td>\n",
       "<td>-20.6683232</td>\n",
       "<td>24.8884542</td>\n",
       "<td>0.1517072</td></tr>\n",
       "<tr><td>13</td>\n",
       "<td>0.6999937</td>\n",
       "<td>0.0118081</td>\n",
       "<td>0.8734063</td>\n",
       "<td>1.1952488</td>\n",
       "<td>0.0136786</td>\n",
       "<td>0.0123627</td>\n",
       "<td>0.0187191</td>\n",
       "<td>0.0181833</td>\n",
       "<td>0.0873333</td>\n",
       "<td>0.8366667</td>\n",
       "<td>-12.6593714</td>\n",
       "<td>19.5248792</td>\n",
       "<td>0.1388475</td></tr>\n",
       "<tr><td>14</td>\n",
       "<td>0.7999958</td>\n",
       "<td>0.0106138</td>\n",
       "<td>0.7066519</td>\n",
       "<td>1.1341726</td>\n",
       "<td>0.0110670</td>\n",
       "<td>0.0112197</td>\n",
       "<td>0.0177625</td>\n",
       "<td>0.0173129</td>\n",
       "<td>0.0706667</td>\n",
       "<td>0.9073333</td>\n",
       "<td>-29.3348089</td>\n",
       "<td>13.4172588</td>\n",
       "<td>0.1090453</td></tr>\n",
       "<tr><td>15</td>\n",
       "<td>0.8999979</td>\n",
       "<td>0.0092505</td>\n",
       "<td>0.5333222</td>\n",
       "<td>1.0674099</td>\n",
       "<td>0.0083525</td>\n",
       "<td>0.0099633</td>\n",
       "<td>0.0167169</td>\n",
       "<td>0.0164962</td>\n",
       "<td>0.0533333</td>\n",
       "<td>0.9606667</td>\n",
       "<td>-46.6677803</td>\n",
       "<td>6.7409884</td>\n",
       "<td>0.0616340</td></tr>\n",
       "<tr><td>16</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0037629</td>\n",
       "<td>0.3933251</td>\n",
       "<td>1.0</td>\n",
       "<td>0.0061599</td>\n",
       "<td>0.0081489</td>\n",
       "<td>0.0156612</td>\n",
       "<td>0.0156615</td>\n",
       "<td>0.0393333</td>\n",
       "<td>1.0</td>\n",
       "<td>-60.6674880</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "</div></div>\n",
       "<div style='margin: 1em 0 1em 0;'>\n",
       "<style>\n",
       "\n",
       "#h2o-table-45.h2o-container {\n",
       "  overflow-x: auto;\n",
       "}\n",
       "#h2o-table-45 .h2o-table {\n",
       "  /* width: 100%; */\n",
       "  margin-top: 1em;\n",
       "  margin-bottom: 1em;\n",
       "}\n",
       "#h2o-table-45 .h2o-table caption {\n",
       "  white-space: nowrap;\n",
       "  caption-side: top;\n",
       "  text-align: left;\n",
       "  /* margin-left: 1em; */\n",
       "  margin: 0;\n",
       "  font-size: larger;\n",
       "}\n",
       "#h2o-table-45 .h2o-table thead {\n",
       "  white-space: nowrap; \n",
       "  position: sticky;\n",
       "  top: 0;\n",
       "  box-shadow: 0 -1px inset;\n",
       "}\n",
       "#h2o-table-45 .h2o-table tbody {\n",
       "  overflow: auto;\n",
       "}\n",
       "#h2o-table-45 .h2o-table th,\n",
       "#h2o-table-45 .h2o-table td {\n",
       "  text-align: right;\n",
       "  /* border: 1px solid; */\n",
       "}\n",
       "#h2o-table-45 .h2o-table tr:nth-child(even) {\n",
       "  /* background: #F5F5F5 */\n",
       "}\n",
       "\n",
       "</style>      \n",
       "<div id=\"h2o-table-45\" class=\"h2o-container\">\n",
       "  <table class=\"h2o-table\">\n",
       "    <caption>Cross-Validation Metrics Summary: </caption>\n",
       "    <thead><tr><th></th>\n",
       "<th>mean</th>\n",
       "<th>sd</th>\n",
       "<th>cv_1_valid</th>\n",
       "<th>cv_2_valid</th>\n",
       "<th>cv_3_valid</th>\n",
       "<th>cv_4_valid</th>\n",
       "<th>cv_5_valid</th></tr></thead>\n",
       "    <tbody><tr><td>accuracy</td>\n",
       "<td>0.919574</td>\n",
       "<td>0.0503304</td>\n",
       "<td>0.9770321</td>\n",
       "<td>0.9188471</td>\n",
       "<td>0.9344536</td>\n",
       "<td>0.8387954</td>\n",
       "<td>0.9287420</td></tr>\n",
       "<tr><td>auc</td>\n",
       "<td>0.6146145</td>\n",
       "<td>0.0153253</td>\n",
       "<td>0.6120911</td>\n",
       "<td>0.6328822</td>\n",
       "<td>0.6000614</td>\n",
       "<td>0.6001108</td>\n",
       "<td>0.6279272</td></tr>\n",
       "<tr><td>err</td>\n",
       "<td>0.0804260</td>\n",
       "<td>0.0503304</td>\n",
       "<td>0.0229679</td>\n",
       "<td>0.0811529</td>\n",
       "<td>0.0655464</td>\n",
       "<td>0.1612046</td>\n",
       "<td>0.0712579</td></tr>\n",
       "<tr><td>err_count</td>\n",
       "<td>1543.0</td>\n",
       "<td>967.3231</td>\n",
       "<td>436.0</td>\n",
       "<td>1557.0</td>\n",
       "<td>1256.0</td>\n",
       "<td>3094.0</td>\n",
       "<td>1372.0</td></tr>\n",
       "<tr><td>f0point5</td>\n",
       "<td>0.0484477</td>\n",
       "<td>0.0141702</td>\n",
       "<td>0.0705755</td>\n",
       "<td>0.0512598</td>\n",
       "<td>0.0469274</td>\n",
       "<td>0.0329245</td>\n",
       "<td>0.0405515</td></tr>\n",
       "<tr><td>f1</td>\n",
       "<td>0.0587356</td>\n",
       "<td>0.0081174</td>\n",
       "<td>0.0562771</td>\n",
       "<td>0.0704478</td>\n",
       "<td>0.0626866</td>\n",
       "<td>0.0491703</td>\n",
       "<td>0.0550964</td></tr>\n",
       "<tr><td>f2</td>\n",
       "<td>0.0873496</td>\n",
       "<td>0.0246364</td>\n",
       "<td>0.0467963</td>\n",
       "<td>0.1125954</td>\n",
       "<td>0.0943820</td>\n",
       "<td>0.0970638</td>\n",
       "<td>0.0859107</td></tr>\n",
       "<tr><td>lift_top_group</td>\n",
       "<td>3.1134658</td>\n",
       "<td>0.7883982</td>\n",
       "<td>4.2033553</td>\n",
       "<td>3.1722884</td>\n",
       "<td>3.3831215</td>\n",
       "<td>2.0753677</td>\n",
       "<td>2.733196</td></tr>\n",
       "<tr><td>logloss</td>\n",
       "<td>0.0793017</td>\n",
       "<td>0.0024097</td>\n",
       "<td>0.0818869</td>\n",
       "<td>0.0818647</td>\n",
       "<td>0.0784535</td>\n",
       "<td>0.0772192</td>\n",
       "<td>0.0770841</td></tr>\n",
       "<tr><td>max_per_class_error</td>\n",
       "<td>0.8428903</td>\n",
       "<td>0.0852896</td>\n",
       "<td>0.9579288</td>\n",
       "<td>0.8126984</td>\n",
       "<td>0.8576271</td>\n",
       "<td>0.7231834</td>\n",
       "<td>0.8630137</td></tr>\n",
       "<tr><td>---</td>\n",
       "<td>---</td>\n",
       "<td>---</td>\n",
       "<td>---</td>\n",
       "<td>---</td>\n",
       "<td>---</td>\n",
       "<td>---</td>\n",
       "<td>---</td></tr>\n",
       "<tr><td>mean_per_class_error</td>\n",
       "<td>0.4555730</td>\n",
       "<td>0.0180037</td>\n",
       "<td>0.4827129</td>\n",
       "<td>0.4408201</td>\n",
       "<td>0.4553944</td>\n",
       "<td>0.4378983</td>\n",
       "<td>0.4610396</td></tr>\n",
       "<tr><td>mse</td>\n",
       "<td>0.0153690</td>\n",
       "<td>0.0006050</td>\n",
       "<td>0.0159653</td>\n",
       "<td>0.0160712</td>\n",
       "<td>0.0151178</td>\n",
       "<td>0.0148022</td>\n",
       "<td>0.0148884</td></tr>\n",
       "<tr><td>null_deviance</td>\n",
       "<td>3089.4463</td>\n",
       "<td>92.5738</td>\n",
       "<td>3158.564</td>\n",
       "<td>3214.8054</td>\n",
       "<td>3048.0613</td>\n",
       "<td>2999.556</td>\n",
       "<td>3026.2446</td></tr>\n",
       "<tr><td>pr_auc</td>\n",
       "<td>0.0271927</td>\n",
       "<td>0.0029253</td>\n",
       "<td>0.0266824</td>\n",
       "<td>0.0322872</td>\n",
       "<td>0.0258162</td>\n",
       "<td>0.0262876</td>\n",
       "<td>0.0248901</td></tr>\n",
       "<tr><td>precision</td>\n",
       "<td>0.0460011</td>\n",
       "<td>0.0226572</td>\n",
       "<td>0.0849673</td>\n",
       "<td>0.0433824</td>\n",
       "<td>0.0401914</td>\n",
       "<td>0.0269815</td>\n",
       "<td>0.0344828</td></tr>\n",
       "<tr><td>r2</td>\n",
       "<td>0.0031034</td>\n",
       "<td>0.0010574</td>\n",
       "<td>0.0029666</td>\n",
       "<td>0.0047994</td>\n",
       "<td>0.0026563</td>\n",
       "<td>0.0019311</td>\n",
       "<td>0.0031636</td></tr>\n",
       "<tr><td>recall</td>\n",
       "<td>0.1571097</td>\n",
       "<td>0.0852896</td>\n",
       "<td>0.0420712</td>\n",
       "<td>0.1873016</td>\n",
       "<td>0.1423729</td>\n",
       "<td>0.2768166</td>\n",
       "<td>0.1369863</td></tr>\n",
       "<tr><td>residual_deviance</td>\n",
       "<td>3037.8745</td>\n",
       "<td>82.14538</td>\n",
       "<td>3108.919</td>\n",
       "<td>3141.3105</td>\n",
       "<td>3006.6519</td>\n",
       "<td>2964.1357</td>\n",
       "<td>2968.3555</td></tr>\n",
       "<tr><td>rmse</td>\n",
       "<td>0.1239525</td>\n",
       "<td>0.0024336</td>\n",
       "<td>0.1263537</td>\n",
       "<td>0.1267721</td>\n",
       "<td>0.1229544</td>\n",
       "<td>0.1216643</td>\n",
       "<td>0.1220182</td></tr>\n",
       "<tr><td>specificity</td>\n",
       "<td>0.9317442</td>\n",
       "<td>0.0527270</td>\n",
       "<td>0.9925029</td>\n",
       "<td>0.9310582</td>\n",
       "<td>0.9468384</td>\n",
       "<td>0.8473868</td>\n",
       "<td>0.9409345</td></tr></tbody>\n",
       "  </table>\n",
       "</div>\n",
       "<pre style='font-size: smaller; margin-bottom: 1em;'>[22 rows x 8 columns]</pre></div><pre style=\"font-size: smaller; margin: 1em 0 0 0;\">\n",
       "\n",
       "[tips]\n",
       "Use `model.explain()` to inspect the model.\n",
       "--\n",
       "Use `h2o.display.toggle_user_tips()` to switch on/off this section.</pre>"
      ],
      "text/plain": [
       "Model Details\n",
       "=============\n",
       "H2OStackedEnsembleEstimator : Stacked Ensemble\n",
       "Model Key: StackedEnsemble_BestOfFamily_1_AutoML_10_20240414_224426\n",
       "\n",
       "\n",
       "Model Summary for Stacked Ensemble: \n",
       "key                                   value\n",
       "------------------------------------  ----------------\n",
       "Stacking strategy                     cross_validation\n",
       "Number of base models (used / total)  2/2\n",
       "# GBM base models (used / total)      1/1\n",
       "# XGBoost base models (used / total)  1/1\n",
       "Metalearner algorithm                 GLM\n",
       "Metalearner fold assignment scheme    Random\n",
       "Metalearner nfolds                    5\n",
       "Metalearner fold_column\n",
       "Custom metalearner hyperparameters    None\n",
       "\n",
       "ModelMetricsBinomialGLM: stackedensemble\n",
       "** Reported on train data. **\n",
       "\n",
       "MSE: 0.014732754309517466\n",
       "RMSE: 0.1213785578655368\n",
       "LogLoss: 0.0722913786476122\n",
       "AUC: 0.9692753119443059\n",
       "AUCPR: 0.520746595774342\n",
       "Gini: 0.9385506238886119\n",
       "Null degrees of freedom: 10024\n",
       "Residual degrees of freedom: 10022\n",
       "Null deviance: 1649.8242864782364\n",
       "Residual deviance: 1449.4421418846246\n",
       "AIC: 1455.4421418846246\n",
       "\n",
       "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.07301502446418714\n",
       "       0     1    Error    Rate\n",
       "-----  ----  ---  -------  ---------------\n",
       "0      9825  39   0.004    (39.0/9864.0)\n",
       "1      92    69   0.5714   (92.0/161.0)\n",
       "Total  9917  108  0.0131   (131.0/10025.0)\n",
       "\n",
       "Maximum Metrics: Maximum metrics at their respective thresholds\n",
       "metric                       threshold    value     idx\n",
       "---------------------------  -----------  --------  -----\n",
       "max f1                       0.073015     0.513011  61\n",
       "max f2                       0.0535493    0.582915  108\n",
       "max f0point5                 0.076222     0.586592  57\n",
       "max accuracy                 0.076222     0.987132  57\n",
       "max precision                0.187031     1         0\n",
       "max recall                   0.0254029    1         299\n",
       "max specificity              0.187031     1         0\n",
       "max absolute_mcc             0.073015     0.517054  61\n",
       "max min_per_class_accuracy   0.0418811    0.913043  162\n",
       "max mean_per_class_accuracy  0.0418811    0.914399  162\n",
       "max tns                      0.187031     9864      0\n",
       "max fns                      0.187031     160       0\n",
       "max fps                      0.0128539    9864      399\n",
       "max tps                      0.0254029    161       299\n",
       "max tnr                      0.187031     1         0\n",
       "max fnr                      0.187031     0.993789  0\n",
       "max fpr                      0.0128539    1         399\n",
       "max tpr                      0.0254029    1         299\n",
       "\n",
       "Gains/Lift Table: Avg response rate:  1.61 %, avg score:  2.98 %\n",
       "group    cumulative_data_fraction    lower_threshold    lift       cumulative_lift    response_rate    score      cumulative_response_rate    cumulative_score    capture_rate    cumulative_capture_rate    gain      cumulative_gain    kolmogorov_smirnov\n",
       "-------  --------------------------  -----------------  ---------  -----------------  ---------------  ---------  --------------------------  ------------------  --------------  -------------------------  --------  -----------------  --------------------\n",
       "1        0.0100748                   0.0744059          40.6894    40.6894            0.653465         0.0974563  0.653465                    0.0974563           0.409938        0.409938                   3968.94   3968.94            0.40639\n",
       "2        0.0200499                   0.0616542          11.8307    26.3319            0.19             0.0665947  0.422886                    0.0821023           0.118012        0.52795                    1083.07   2533.19            0.51619\n",
       "3        0.0300249                   0.0551544          13.6988    22.1348            0.22             0.0582598  0.355482                    0.0741812           0.136646        0.664596                   1269.88   2113.48            0.644929\n",
       "4        0.04                        0.0515555          8.09472    18.6335            0.13             0.0534135  0.299252                    0.0690022           0.0807453       0.745342                   709.472   1763.35            0.716854\n",
       "5        0.0500748                   0.0487682          6.78156    16.249             0.108911         0.0502283  0.260956                    0.065225            0.068323        0.813665                   578.156   1524.9             0.776053\n",
       "6        0.10005                     0.041622           1.98857    9.12588            0.0319361        0.0445667  0.14656                     0.0549062           0.0993789       0.913043                   98.8569   812.588            0.826263\n",
       "7        0.150025                    0.0381586          0.745714   6.33435            0.011976         0.0397336  0.101729                    0.049852            0.0372671       0.950311                   -25.4286  533.435            0.813348\n",
       "8        0.2                         0.0354292          0.248571   4.81366            0.00399202       0.0367419  0.0773067                   0.0465761           0.0124224       0.962733                   -75.1429  381.366            0.775182\n",
       "9        0.30005                     0.0320839          0.248323   3.29138            0.00398804       0.0336374  0.052859                    0.0422618           0.0248447       0.987578                   -75.1677  229.138            0.69875\n",
       "10       0.4                         0.0296056          0.0621428  2.48447            0.000998004      0.0307968  0.0399002                   0.039397            0.00621118      0.993789                   -93.7857  148.447            0.603481\n",
       "11       0.50005                     0.0275032          0          1.98738            0                0.0285132  0.031917                    0.0372193           0               0.993789                   -100      98.7379            0.501798\n",
       "12       0.6                         0.0256556          0          1.65631            0                0.0265948  0.0266002                   0.0354495           0               0.993789                   -100      65.6315            0.400216\n",
       "13       0.69995                     0.0238115          0.0621428  1.42867            0.000998004      0.0247438  0.0229443                   0.0339207           0.00621118      1                          -93.7857  42.8673            0.304947\n",
       "14       0.8                         0.0217162          0          1.25               0                0.0227909  0.0200748                   0.0325288           0               1                          -100      25                 0.203264\n",
       "15       0.89995                     0.0191074          0          1.11117            0                0.0204333  0.0178453                   0.0311855           0               1                          -100      11.1173            0.101683\n",
       "16       1                           0.0128539          0          1                  0                0.0170979  0.0160599                   0.029776            0               1                          -100      0                  0\n",
       "\n",
       "ModelMetricsBinomialGLM: stackedensemble\n",
       "** Reported on validation data. **\n",
       "\n",
       "MSE: 0.015551263033921004\n",
       "RMSE: 0.12470470333520306\n",
       "LogLoss: 0.08323480175771274\n",
       "AUC: 0.615829274501485\n",
       "AUCPR: 0.030103741931861692\n",
       "Gini: 0.2316585490029699\n",
       "Null degrees of freedom: 23944\n",
       "Residual degrees of freedom: 23942\n",
       "Null deviance: 3861.537856416843\n",
       "Residual deviance: 3986.114656176863\n",
       "AIC: 3992.114656176863\n",
       "\n",
       "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.06180198067132455\n",
       "       0      1    Error    Rate\n",
       "-----  -----  ---  -------  ---------------\n",
       "0      23220  350  0.0148   (350.0/23570.0)\n",
       "1      347    28   0.9253   (347.0/375.0)\n",
       "Total  23567  378  0.0291   (697.0/23945.0)\n",
       "\n",
       "Maximum Metrics: Maximum metrics at their respective thresholds\n",
       "metric                       threshold    value      idx\n",
       "---------------------------  -----------  ---------  -----\n",
       "max f1                       0.061802     0.0743692  72\n",
       "max f2                       0.0325279    0.102437   222\n",
       "max f0point5                 0.061802     0.0741918  72\n",
       "max accuracy                 0.156148     0.984339   1\n",
       "max precision                0.156148     0.5        1\n",
       "max recall                   0.0142671    1          394\n",
       "max specificity              0.172631     0.999958   0\n",
       "max absolute_mcc             0.061802     0.0595832  72\n",
       "max min_per_class_accuracy   0.0292724    0.580611   254\n",
       "max mean_per_class_accuracy  0.0314859    0.588278   232\n",
       "max tns                      0.172631     23569      0\n",
       "max fns                      0.172631     375        0\n",
       "max fps                      0.013071     23570      399\n",
       "max tps                      0.0142671    375        394\n",
       "max tnr                      0.172631     0.999958   0\n",
       "max fnr                      0.172631     1          0\n",
       "max fpr                      0.013071     1          399\n",
       "max tpr                      0.0142671    1          394\n",
       "\n",
       "Gains/Lift Table: Avg response rate:  1.57 %, avg score:  2.96 %\n",
       "group    cumulative_data_fraction    lower_threshold    lift      cumulative_lift    response_rate    score      cumulative_response_rate    cumulative_score    capture_rate    cumulative_capture_rate    gain      cumulative_gain    kolmogorov_smirnov\n",
       "-------  --------------------------  -----------------  --------  -----------------  ---------------  ---------  --------------------------  ------------------  --------------  -------------------------  --------  -----------------  --------------------\n",
       "1        0.010023                    0.0662708          4.52294   4.52294            0.0708333        0.0801566  0.0708333                   0.0801566           0.0453333       0.0453333                  352.294   352.294            0.0358722\n",
       "2        0.0200042                   0.0584993          2.93886   3.73255            0.0460251        0.0623005  0.0584551                   0.0712472           0.0293333       0.0746667                  193.886   273.255            0.0555322\n",
       "3        0.0300271                   0.0538876          1.06422   2.84187            0.0166667        0.055944   0.0445063                   0.066139            0.0106667       0.0853333                  6.42222   184.187            0.0561861\n",
       "4        0.0400084                   0.0508933          1.87018   2.59946            0.0292887        0.0524194  0.0407098                   0.0627163           0.0186667       0.104                      87.0181   159.946            0.0650098\n",
       "5        0.0500313                   0.0486582          0.532111  2.1853             0.00833333       0.0497459  0.0342237                   0.0601179           0.00533333      0.109333                   -46.7889  118.53             0.0602455\n",
       "6        0.100021                    0.0417889          1.60033   1.89294            0.0250627        0.0447789  0.0296451                   0.0524516           0.08            0.189333                   60.0334   89.2938            0.0907334\n",
       "7        0.15001                     0.0383292          1.49365   1.75988            0.0233918        0.0399461  0.0275612                   0.0482843           0.0746667       0.264                      49.3645   75.9878            0.115803\n",
       "8        0.2                         0.0357324          1.22692   1.62667            0.0192147        0.0369589  0.025475                    0.0454535           0.0613333       0.325333                   22.6923   62.6667            0.127327\n",
       "9        0.300021                    0.0322649          1.4397    1.56434            0.022547         0.0338784  0.0244989                   0.0415946           0.144           0.469333                   43.9699   56.4336            0.172006\n",
       "10       0.4                         0.0296646          0.933528  1.40667            0.0146199        0.0308889  0.0220297                   0.0389187           0.0933333       0.562667                   -6.64717  40.6667            0.165255\n",
       "11       0.500021                    0.0276373          0.906477  1.30661            0.0141962        0.0286402  0.0204627                   0.0368627           0.0906667       0.653333                   -9.35226  30.6612            0.155752\n",
       "12       0.6                         0.0257443          1.01354   1.25778            0.015873         0.0266987  0.0196979                   0.035169            0.101333        0.754667                   1.3545    25.7778            0.157127\n",
       "13       0.699979                    0.023865           0.72015   1.18099            0.0112782        0.0248051  0.0184953                   0.0336887           0.072           0.826667                   -27.985   18.0988            0.128703\n",
       "14       0.8                         0.0217152          0.586544  1.10667            0.0091858        0.0228481  0.0173314                   0.0323334           0.0586667       0.885333                   -41.3456  10.6667            0.086691\n",
       "15       0.899979                    0.0190535          0.72015   1.06373            0.0112782        0.0204321  0.0166589                   0.0310113           0.072           0.957333                   -27.985   6.37284            0.0582667\n",
       "16       1                           0.0128441          0.426578  1                  0.00668058       0.0170485  0.0156609                   0.0296147           0.0426667       1                          -57.3422  0                  0\n",
       "\n",
       "ModelMetricsBinomialGLM: stackedensemble\n",
       "** Reported on cross-validation data. **\n",
       "\n",
       "MSE: 0.0153677690917643\n",
       "RMSE: 0.12396680641108852\n",
       "LogLoss: 0.07929611252452003\n",
       "AUC: 0.6147189694308322\n",
       "AUCPR: 0.02618197020102293\n",
       "Gini: 0.2294379388616643\n",
       "Null degrees of freedom: 95777\n",
       "Residual degrees of freedom: 95775\n",
       "Null deviance: 15447.231248486467\n",
       "Residual deviance: 15189.646130746956\n",
       "AIC: 15195.646130746956\n",
       "\n",
       "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.02454676150565218\n",
       "       0      1     Error    Rate\n",
       "-----  -----  ----  -------  ----------------\n",
       "0      86328  7950  0.0843   (7950.0/94278.0)\n",
       "1      1240   260   0.8267   (1240.0/1500.0)\n",
       "Total  87568  8210  0.096    (9190.0/95778.0)\n",
       "\n",
       "Maximum Metrics: Maximum metrics at their respective thresholds\n",
       "metric                       threshold    value      idx\n",
       "---------------------------  -----------  ---------  -----\n",
       "max f1                       0.0245468    0.053553   165\n",
       "max f2                       0.0176342    0.0954986  234\n",
       "max f0point5                 0.0392926    0.0469982  89\n",
       "max accuracy                 0.198758     0.984349   0\n",
       "max precision                0.198758     1          0\n",
       "max recall                   0.00627246   1          393\n",
       "max specificity              0.198758     1          0\n",
       "max absolute_mcc             0.0141412    0.0431676  285\n",
       "max min_per_class_accuracy   0.0150963    0.578693   269\n",
       "max mean_per_class_accuracy  0.0141412    0.586917   285\n",
       "max tns                      0.198758     94278      0\n",
       "max fns                      0.198758     1499       0\n",
       "max fps                      0.00419779   94278      399\n",
       "max tps                      0.00627246   1500       393\n",
       "max tnr                      0.198758     1          0\n",
       "max fnr                      0.198758     0.999333   0\n",
       "max fpr                      0.00419779   1          399\n",
       "max tpr                      0.00627246   1          393\n",
       "\n",
       "Gains/Lift Table: Avg response rate:  1.57 %, avg score:  1.57 %\n",
       "group    cumulative_data_fraction    lower_threshold    lift      cumulative_lift    response_rate    score       cumulative_response_rate    cumulative_score    capture_rate    cumulative_capture_rate    gain      cumulative_gain    kolmogorov_smirnov\n",
       "-------  --------------------------  -----------------  --------  -----------------  ---------------  ----------  --------------------------  ------------------  --------------  -------------------------  --------  -----------------  --------------------\n",
       "1        0.0100023                   0.0418766          3.13261   3.13261            0.0490605        0.0534118   0.0490605                   0.0534118           0.0313333       0.0313333                  213.261   213.261            0.0216704\n",
       "2        0.0200046                   0.0355028          1.93289   2.53275            0.0302714        0.0383074   0.039666                    0.0458596           0.0193333       0.0506667                  93.2889   153.275            0.0311499\n",
       "3        0.0300069                   0.0321481          1.99954   2.35501            0.0313152        0.0337554   0.0368824                   0.0418249           0.02            0.0706667                  99.9541   135.501            0.0413067\n",
       "4        0.0400092                   0.0299106          2.06619   2.28281            0.0323591        0.0309894   0.0357516                   0.039116            0.0206667       0.0913333                  106.619   128.281            0.0521407\n",
       "5        0.050001                    0.0282369          1.86819   2.19995            0.0292581        0.0290241   0.034454                    0.0370993           0.0186667       0.11                       86.8188   119.995            0.0609536\n",
       "6        0.100002                    0.0234834          1.59997   1.89996            0.0250574        0.0255386   0.0297557                   0.031319            0.08            0.19                       59.9967   89.996             0.0914298\n",
       "7        0.150003                    0.0210135          1.33331   1.71108            0.0208812        0.0221558   0.0267975                   0.0282646           0.0666667       0.256667                   33.3305   71.1075            0.108361\n",
       "8        0.200004                    0.0193195          1.23997   1.5933             0.0194195        0.0201298   0.024953                    0.0262309           0.062           0.318667                   23.9974   59.33              0.12055\n",
       "9        0.300006                    0.0170178          1.18664   1.45775            0.0185843        0.0180894   0.0228301                   0.0235171           0.118667        0.437333                   18.6642   45.7747            0.139512\n",
       "10       0.400008                    0.0153927          1.16664   1.38497            0.018271         0.0161619   0.0216903                   0.0216783           0.116667        0.554                      16.6642   38.4971            0.156442\n",
       "11       0.5                         0.0140716          1.1601    1.34               0.0181685        0.0147199   0.020986                    0.0202867           0.116           0.67                       16.0097   34                 0.172705\n",
       "12       0.600002                    0.0129192          0.793317  1.24888            0.0124243        0.0134869   0.0195591                   0.0191534           0.0793333       0.749333                   -20.6683  24.8885            0.151707\n",
       "13       0.699994                    0.0118081          0.873406  1.19525            0.0136786        0.0123627   0.0187191                   0.0181833           0.0873333       0.836667                   -12.6594  19.5249            0.138847\n",
       "14       0.799996                    0.0106138          0.706652  1.13417            0.011067         0.0112197   0.0177625                   0.0173129           0.0706667       0.907333                   -29.3348  13.4173            0.109045\n",
       "15       0.899998                    0.0092505          0.533322  1.06741            0.00835247       0.00996325  0.0167169                   0.0164962           0.0533333       0.960667                   -46.6678  6.74099            0.061634\n",
       "16       1                           0.00376286         0.393325  1                  0.00615995       0.00814891  0.0156612                   0.0156615           0.0393333       1                          -60.6675  0                  0\n",
       "\n",
       "Cross-Validation Metrics Summary: \n",
       "                      mean          sd            cv_1_valid    cv_2_valid    cv_3_valid    cv_4_valid    cv_5_valid\n",
       "--------------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------\n",
       "accuracy              0.919574      0.050330404   0.97703207    0.9188471     0.9344536     0.8387954     0.92874205\n",
       "auc                   0.61461455    0.015325267   0.6120911     0.6328822     0.60006136    0.6001108     0.62792724\n",
       "err                   0.080425955   0.050330404   0.022967918   0.08115292    0.06554639    0.1612046     0.07125792\n",
       "err_count             1543.0        967.3231      436.0         1557.0        1256.0        3094.0        1372.0\n",
       "f0point5              0.048447724   0.01417018    0.07057546    0.051259775   0.046927374   0.03292452    0.040551502\n",
       "f1                    0.058735613   0.008117401   0.056277055   0.07044776    0.06268657    0.049170252   0.055096418\n",
       "f2                    0.08734963    0.02463644    0.046796255   0.11259542    0.094382025   0.09706382    0.085910656\n",
       "lift_top_group        3.1134658     0.78839815    4.2033553     3.1722884     3.3831215     2.0753677     2.733196\n",
       "logloss               0.07930168    0.0024096703  0.081886925   0.081864655   0.078453496   0.07721919    0.077084124\n",
       "max_per_class_error   0.84289026    0.08528962    0.9579288     0.8126984     0.8576271     0.7231834     0.8630137\n",
       "---                   ---           ---           ---           ---           ---           ---           ---\n",
       "mean_per_class_error  0.45557305    0.018003713   0.48271292    0.4408201     0.45539436    0.4378983     0.4610396\n",
       "mse                   0.015368965   0.0006049513  0.015965253   0.016071161   0.01511778    0.014802203   0.014888432\n",
       "null_deviance         3089.4463     92.5738       3158.564      3214.8054     3048.0613     2999.556      3026.2446\n",
       "pr_auc                0.027192686   0.0029253333  0.026682377   0.032287188   0.025816202   0.026287604   0.024890063\n",
       "precision             0.046001054   0.022657208   0.08496732    0.043382354   0.040191386   0.02698145    0.03448276\n",
       "r2                    0.0031034066  0.001057439   0.0029666456  0.004799358   0.0026563376  0.0019311167  0.0031635754\n",
       "recall                0.15710972    0.08528962    0.042071197   0.18730159    0.14237288    0.2768166     0.1369863\n",
       "residual_deviance     3037.8745     82.14538      3108.919      3141.3105     3006.6519     2964.1357     2968.3555\n",
       "rmse                  0.12395252    0.0024335918  0.12635368    0.12677208    0.12295438    0.1216643     0.12201816\n",
       "specificity           0.93174416    0.05272704    0.9925029     0.9310582     0.9468384     0.8473868     0.9409345\n",
       "[22 rows x 8 columns]\n",
       "\n",
       "\n",
       "[tips]\n",
       "Use `model.explain()` to inspect the model.\n",
       "--\n",
       "Use `h2o.display.toggle_user_tips()` to switch on/off this section."
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Run AutoML for 30 seconds\n",
    "aml = H2OAutoML(nfolds=5\n",
    "                , max_runtime_secs=100\n",
    "                # , balance_classes=True\n",
    "                , stopping_metric=\"lift_top_group\"\n",
    "                , stopping_rounds=5\n",
    "                # , project_name=\"scorecardpipeline\"\n",
    "                , include_algos=[\"XGBoost\", \"GBM\", \"DRF\", \"StackedEnsemble\"]\n",
    "                , sort_metric=\"logloss\"\n",
    "               )\n",
    "aml.train(x=x, y=y, training_frame=train_select, validation_frame=test_select)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class='dataframe'>\n",
       "<thead>\n",
       "<tr><th>model_id                                                </th><th style=\"text-align: right;\">  logloss</th><th style=\"text-align: right;\">     auc</th><th style=\"text-align: right;\">    aucpr</th><th style=\"text-align: right;\">  mean_per_class_error</th><th style=\"text-align: right;\">    rmse</th><th style=\"text-align: right;\">      mse</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "<tr><td>StackedEnsemble_BestOfFamily_1_AutoML_10_20240414_224426</td><td style=\"text-align: right;\">0.0792961</td><td style=\"text-align: right;\">0.614719</td><td style=\"text-align: right;\">0.026182 </td><td style=\"text-align: right;\">              0.455496</td><td style=\"text-align: right;\">0.123967</td><td style=\"text-align: right;\">0.0153678</td></tr>\n",
       "<tr><td>GBM_2_AutoML_10_20240414_224426                         </td><td style=\"text-align: right;\">0.080128 </td><td style=\"text-align: right;\">0.606528</td><td style=\"text-align: right;\">0.0246042</td><td style=\"text-align: right;\">              0.467163</td><td style=\"text-align: right;\">0.124128</td><td style=\"text-align: right;\">0.0154077</td></tr>\n",
       "<tr><td>GBM_3_AutoML_10_20240414_224426                         </td><td style=\"text-align: right;\">0.0803648</td><td style=\"text-align: right;\">0.601025</td><td style=\"text-align: right;\">0.022218 </td><td style=\"text-align: right;\">              0.458346</td><td style=\"text-align: right;\">0.124273</td><td style=\"text-align: right;\">0.0154437</td></tr>\n",
       "<tr><td>GBM_4_AutoML_10_20240414_224426                         </td><td style=\"text-align: right;\">0.0804008</td><td style=\"text-align: right;\">0.579075</td><td style=\"text-align: right;\">0.0219133</td><td style=\"text-align: right;\">              0.473836</td><td style=\"text-align: right;\">0.124196</td><td style=\"text-align: right;\">0.0154246</td></tr>\n",
       "<tr><td>StackedEnsemble_BestOfFamily_2_AutoML_10_20240414_224426</td><td style=\"text-align: right;\">0.0804754</td><td style=\"text-align: right;\">0.560877</td><td style=\"text-align: right;\">0.0212636</td><td style=\"text-align: right;\">              0.47342 </td><td style=\"text-align: right;\">0.12414 </td><td style=\"text-align: right;\">0.0154107</td></tr>\n",
       "<tr><td>GBM_1_AutoML_10_20240414_224426                         </td><td style=\"text-align: right;\">0.0804876</td><td style=\"text-align: right;\">0.603757</td><td style=\"text-align: right;\">0.0292934</td><td style=\"text-align: right;\">              0.470059</td><td style=\"text-align: right;\">0.124148</td><td style=\"text-align: right;\">0.0154126</td></tr>\n",
       "<tr><td>XGBoost_1_AutoML_10_20240414_224426                     </td><td style=\"text-align: right;\">0.12758  </td><td style=\"text-align: right;\">0.610387</td><td style=\"text-align: right;\">0.0233224</td><td style=\"text-align: right;\">              0.455001</td><td style=\"text-align: right;\">0.143265</td><td style=\"text-align: right;\">0.0205249</td></tr>\n",
       "<tr><td>DRF_1_AutoML_10_20240414_224426                         </td><td style=\"text-align: right;\">0.206885 </td><td style=\"text-align: right;\">0.553359</td><td style=\"text-align: right;\">0.0207998</td><td style=\"text-align: right;\">              0.474785</td><td style=\"text-align: right;\">0.139758</td><td style=\"text-align: right;\">0.0195323</td></tr>\n",
       "<tr><td>XGBoost_2_AutoML_10_20240414_224426                     </td><td style=\"text-align: right;\">0.45345  </td><td style=\"text-align: right;\">0.56302 </td><td style=\"text-align: right;\">0.0191009</td><td style=\"text-align: right;\">              0.469484</td><td style=\"text-align: right;\">0.364877</td><td style=\"text-align: right;\">0.133135 </td></tr>\n",
       "</tbody>\n",
       "</table><pre style='font-size: smaller; margin-bottom: 1em;'>[9 rows x 7 columns]</pre>"
      ],
      "text/plain": [
       "model_id                                                    logloss       auc      aucpr    mean_per_class_error      rmse        mse\n",
       "--------------------------------------------------------  ---------  --------  ---------  ----------------------  --------  ---------\n",
       "StackedEnsemble_BestOfFamily_1_AutoML_10_20240414_224426  0.0792961  0.614719  0.026182                 0.455496  0.123967  0.0153678\n",
       "GBM_2_AutoML_10_20240414_224426                           0.080128   0.606528  0.0246042                0.467163  0.124128  0.0154077\n",
       "GBM_3_AutoML_10_20240414_224426                           0.0803648  0.601025  0.022218                 0.458346  0.124273  0.0154437\n",
       "GBM_4_AutoML_10_20240414_224426                           0.0804008  0.579075  0.0219133                0.473836  0.124196  0.0154246\n",
       "StackedEnsemble_BestOfFamily_2_AutoML_10_20240414_224426  0.0804754  0.560877  0.0212636                0.47342   0.12414   0.0154107\n",
       "GBM_1_AutoML_10_20240414_224426                           0.0804876  0.603757  0.0292934                0.470059  0.124148  0.0154126\n",
       "XGBoost_1_AutoML_10_20240414_224426                       0.12758    0.610387  0.0233224                0.455001  0.143265  0.0205249\n",
       "DRF_1_AutoML_10_20240414_224426                           0.206885   0.553359  0.0207998                0.474785  0.139758  0.0195323\n",
       "XGBoost_2_AutoML_10_20240414_224426                       0.45345    0.56302   0.0191009                0.469484  0.364877  0.133135\n",
       "[9 rows x 7 columns]\n"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Print Leaderboard (ranked by xval metrics)\n",
    "aml.leaderboard"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.615829274501485"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (Optional) Evaluate performance on a test set\n",
    "perf_test = aml.leader.model_performance(test_select)\n",
    "perf_test.auc()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5807054204660588"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (Optional) Evaluate performance on a test set\n",
    "perf_oot = aml.leader.model_performance(oot_select)\n",
    "perf_oot.auc()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "best_model = aml.get_best_model()\n",
    "# best_model.explain(oot_select);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "stackedensemble prediction progress: |███████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABjAAAAMSCAYAAADEO41kAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3RU5fr28WtqeiGhkwQSuiiiUqVIUQGlqAhI70UU+1GP7Wevx3P0tSBNOWIFUbEjgqggUkVQeuiQQHpvM7PfP0LmEGkJKTNJvp+1WIQ9u9wTBrL3vvbz3CbDMAwBAAAAAAAAAAB4EbOnCwAAAAAAAAAAAPg7AgwAAAAAAAAAAOB1CDAAAAAAAAAAAIDXIcAAAAAAAAAAAABehwADAAAAAAAAAAB4HQIMAAAAAAAAAADgdQgwAAAAAAAAAACA1yHAAAAAAAAAAAAAXocAAwAAAAAAAAAAeB0CDAAAAOAMXC5Xsa8Nwzjrn+GdTv07dDgcxf7OnE7nBe/X4XAU23fRsYr2aRhGsdcNw5DD4bjg4wEAAAA1ldXTBQAAAACetnLlSi1cuFC//vqrJKlNmzaaPHmyrrvuOknS2rVrNX/+fK1Zs0Ymk0lXXHGFHnvsMbVs2fKc+925c6dmz56t5ORk5ebmKjMzU7169dJtt90mPz+/c26bn5+vd955R2vXrlV+fr569uypKVOmyGQylfh9vfDCC1qyZInS0tIkSRdffLEMw1BycrICAwPVuXNnjRo1StHR0Wfdx7Fjx/TRRx/p119/lY+Pj1wul1JSUtSmTRsNGzZMnTp1Ouu227Zt0wcffKDNmzcrODhYPj4+SklJUe3atdWpUydNnjxZdrv9nO/h+PHjWrhwoX7++WdZrVb5+/srIyNDdrtd7dq104QJE2SxWLRgwQJ9+umnSk1NlcVi0aBBg9S3b1/16tVLkrRmzRotWbJEP/zwg5o0aaJhw4ZpwIABuuOOO7R582YZhiF/f39ddNFFSk9PV0pKimJiYtS7d2+NHDmyWJ1ffvml5syZo3379rmX9ezZUzNnztTFF1+s1NRUvfnmm/r999+1bds2tWvXTgMGDFB0dLRWr16tjz76SDk5ObLZbLr00ktlNv/vubJDhw4pPj5ea9euVVhY2Ln/ggEAAIDqzgAAAABgHD582GjRooXRokULY+XKlae9vmDBAmP06NHGzp07S7S/7du3G5dffrnx+eefu5fFxsYaV155pbF3797zbv/MM88YnTt3NjIyMozk5GSjZ8+exgcffFDyN3TSjz/+6H5fu3btMgzDMFJTU41bbrnFaNGihXHFFVcYhw4dOuO2CxcuNC655BLjpptuMg4cOOBenp6ebjz44INGixYtjDvuuMPIysoqtp3L5TKef/55o0WLFsZDDz1kpKSkuF/LyckxHn/8caNFixbGkSNHzln7l19+aVx66aXG8OHDT/ueLVq0yGjTpo3x6aefupf94x//MFq0aGEMGjTorPu8/fbbjV9++aXYspkzZxotWrQwbrzxRveyDRs2GG3atDFatGhhTJs27bT9ZGVlGZ06dXJ/b48fP37aOjt27DCuu+46w+l0Fls+atQoo0WLFsaMGTNO2yY3N9fo37+/kZaWdtb3AAAAANQUTCEFAAAAnMf/+3//T4cPH9Z///vf8466KDJ//nxlZmbqqquuci+LiYnRlClTSrT98uXL5XK5ZLfbVatWLXXp0kVbtmwpde1nGukREhKiMWPGSJIyMjK0fPny09ZZsGCBnnrqKQUHB2vevHlq3Lix+7WgoCA9++yz6t69u7777jvNnDmz2PRM//nPf/T222+rV69eeuaZZxQaGup+zdfXV4899pguu+yyc07D9fPPP+sf//iHQkJCNHfuXDVt2rTY60OHDtWECROK7aNoJIPFYjnrfgMCAmSz2Yot8/f3P2299u3bq0uXLpKkH3/8USkpKadtM2LECPefv/7669P28d1332nkyJHFRlhIco+iOVOdPj4+Gjt27FnrBwAAAGoSAgwAAADgLAzD0JNPPimn06lHHnnktBvR51I0bdOTTz5Z7Ob3yJEj1aRJk/NuX6tWLaWmpur555+XJCUkJKhVq1alewPncGpPhvr16xd77fDhw3r55ZclSePGjVOtWrVO295kMumOO+6QJK1evVqfffaZJGnfvn2aN2+eJGnq1KlnPLbJZNLEiRPPGBwU1fb444/L5XJpxIgRCgoKOuN6N9xwgyIiIs71Nsuk6HsUGBh4xhpGjx4tHx8fSdKHH354Wo+N77//XoMHDy71cQcMGHDW7w0AAABQkxBgAAAAAGdQUFCg++67T/Xr19fdd99d6u0vv/xySYVP5vfu3VuPPvqodu3aJbvdfs4RAkVGjx4tSXr//fc1ceJEhYeHa9SoUaWu40y2bt2qV155RZI0ZMgQ9evXr9jrn332mfLz8yVJV1555Vn307ZtW/foik8++URSYX8Ip9Mpu92uSy+99KzbXnvttWft8bBhwwYdPXpUUuFIiLNp2rSpOnbseNbXL1Rubq7++9//au3atQoMDNRLL70kq/X09oHh4eHugOLgwYP65Zdf3K/9/PPP6ty5swIDA0t83LS0NE2dOlWBgYFnPB4AAABQ03BWDAAAAPxNfHy8xo8fr/T0dD3zzDMXtI9x48Zp3bp1Wrt2rbKzs7Vo0SItXrxYN954ox599NHzPmF/5ZVXqmXLltq1a5c2bdqkjz76yN1IeuPGjZoxY4ays7N1++23a9y4cedtCi5J999/vw4dOqSsrCxJ0ty5c9WjR4/T1tu5c6f764YNG55zn1FRUUpNTdWuXbskyf17aGhoiYKaMynahyTVrl37gvZxIfbv369BgwZp7969cjqdatq0qT744INiU2D93YQJE7R48WIZhqEPPvjA/f1cvHix7rnnnnMeb/369e6pvHJycrR3795iU3UBAAAANR0jMAAAAIC/efzxx7Vx40bt3r1b48aNU3Jycqn34e/vr/nz5+upp55STEyMpMIpqT799FM9/vjjZ90uPT1d999/v1588UV9/PHH6t69u3JzczV9+nQlJCRIKhyV0LJlS82aNUvTp08vUXghSS+++KLeeOMN959/+OGHM6536vRSAQEB59xnUUjhcrkkyT1yo6CgoEQ1nUnRPsq6n9KKjo7WF198oQEDBkiSYmNjtX///nNuExMTo549e0qSfvrpJx05ckQnTpxQbm6umjVrds5tO3bsqIULF2rhwoX65JNPNHPmzHJ5HwAAAEB1QYABAAAA/M3rr7+uW265RZK0ZcsWDR8+XAcOHCj1fiwWi4YNG6Zvv/1WCxYscE+p9NVXXyk7O/uM29x3331aunSp7r77bvn5+emVV15RixYtFB8frxkzZigvL09bt27V0KFD1b1791LX1KVLF/Xq1UtS4SiBHTt2nLZOdHS0++tDhw6dc39JSUmS5A5pIiMjJRVOh1Q00qO0ivYhSceOHbugfZxNbm6uu2/F2dx7773udZ5++ulzNhuXpEmTJkkqDHE+/PBDffrppxo2bFipaxszZkypppwCAAAAqjsCDAAAAOBvrFarnnjiCd1zzz0ymUw6dOiQhg8frk2bNp227lNPPaUxY8a4f917772SCntXnKpLly5auHChoqKi5HQ6z3hzPyMjQz/99JMkuftDBAYGas6cOapTp462bt2q++67T3v37tWgQYMu+P3dddddMplMcrlcZ5wia8CAATKZTJKkL7744qz7SUpK0uHDhyVJAwcOlCT1799fUuHN/LVr1551W6fTqb17957xte7du7tHfqxevfqc7+XU6a6KRqKcKziJj49XvXr1zrnPevXqacSIEZKkP//8U0uWLDnn+h06dFDbtm0lFfYC+fnnn3X11Vefc5szsdvtuuqqq0q9HQAAAFBdEWAAAAAAZzFt2jS98MILstlsSk1N1YQJE/TNN98UW+fRRx91TwO0cOFCvfzyy5KkZcuWad++fcXW9fHxUfPmzVWnTh2Fh4efdjyz2eyekunUG/cNGjTQW2+9JT8/P33//ff67bffyjS1UqtWrdS3b19JhQ2z//6eLrnkEvcN/IULFyo+Pv6M+3n33XdlGIYuuugijRw5UlLhtEhF4crrr79ebDqoUy1YsEB//fXXGV8LDAzUP//5T0mFgcDZRoFs3bpVH3zwgfvP7dq1kyQdOXLkjNN+paamKjMzUw0aNDjj/k41bdo0d5+S//znP8rMzDzn+hMmTHAf48orr7zgJtxTp06VVDgd1alNwQEAAICaiAADAAAA0P96OEiFowOKDB48WHPnzpW/v7/y8vJ0zz336OWXXy62zpkYhqE777yzWA+FrVu3av369br//vtlNp9+Kh4QEKBRo0ZJkh555BG9/fbb2rZtm9avX68ff/xRI0aMUFBQkJYuXarrr79e/+///T8tWLDAfbP/TE6t89Sb+nfccYe7hmeeeea0KbIeeeQRjR49Wjk5ORo/fry2b99ebJ/vvvuu5syZo44dO2revHnuBuOS9Oyzz2rIkCHasWOHpkyZUux7YBiGlixZon//+9+66KKLzlr30KFD9dhjj8nlcmn8+PGnjebYsmWLZsyYoZYtW7qXDRgwQFdeeaUcDoceeughpaamul/LzMzUY489phkzZpx2rKKeH6euHxYW5m6wnZiYqIcffvicf+d9+/ZVRESEbDabhg8fftb1TnW2EKroM9KqVasS7QcAAACorkzG+SZ0BQAAAKq55cuXa/78+fr9998lFfZguO2223TjjTdq9+7dmjt3rn7++ediN7hbtmyphx9+WJ06dTrjPletWqVFixZp165dCgkJka+vrwIDAzVhwgR16dLlrLU4HA699957WrJkiQ4ePCgfHx9dfvnlmj59ui677DIdOXJEs2bN0k8//aTs7Gx16NBBjzzySLG+EUXmzJmjpUuXuqdqCg0NVe/evfXcc89Jku6//34tXbpUUmHT8e7du+vxxx93T18lSX/99Zc+/vhjbdiwQX5+fgoICFBGRoYaN26swYMHq1evXu7ppv5u69atWrRokTZu3Ci73a6AgAAlJSXJMAy1bdtW//rXv866bZFjx47po48+0urVq5Wdna1atWopMzNT6enpatasmZ544glFREQU+/4tWbJEX331lQ4fPqzw8HAFBQXJarVq1KhR7v4fknT8+HG98sor+u6779w9SVq3bq1JkyZp4MCBSktLU58+fZSRkSFJaty4sYYMGaJp06adsdZ3331Xmzdv1iuvvHLG13/66Sdt375d7777rpKTk2Wz2dS2bVv3qBupMGTau3evfH199ccff5zzewMAAABUdwQYAAAAqPGcTmexm8inLnM6nTKbzafdaHc6nTIM44KnCgIAAAAAnBsBBgAAAAAAAAAA8Dr0wAAAAAAAAAAAAF6HAAMAAAAAAAAAAHgdAgwAAAAAAAAAAOB1CDAAAAAAAAAAAIDXIcAAAAAAAAAAAABehwADAAAAAAAAAAB4HQIMAAAAAAAAAADgdQgwAAAAAAAAAACA1yHAAAAAAAAAAAAAXocAAwAAAAAAAAAAeB0CDAAAAAAAAAAA4HUIMAAAAAAAAAAAgNchwAAAAAAAAAAAAF6HAAMAAAAAAAAAAHgdAgwAAAAAAAAAAOB1CDAAAAAAAAAAAIDXIcAAAAAAAAAAAABehwADAAAAAAAAAAB4HQIMAAAAAAAAAADgdQgwAAAAAAAAAACA1yHAAAAAAAAAAAAAXocAAwAAAAAAAAAAeB0CDAAAAAAAAAAA4HUIMAAAAAAAAAAAgNchwAAAAAAAAAAAAF6HAAMAAAAAAAAAAHgdAgwAAAAAAAAAAOB1CDAAAECV9Nhjj6lv37565513SrXdsmXL1KFDB40bN07p6ekVVF3NlpiYqHXr1undd9/Vfffdp27duunWW29VQkJCuR/r/vvv18SJExUbG1um/fz111+69NJLNW3aNBmGUaptnU6nbrrpJl1++eW65557SrXt66+/rt69e+uFF15Qbm5uqbZF5aisz/OOHTvUtWtXPf/882X+LPB5BgAAQHVBgAEAACpc0Q00wzCKfe1yuUq1n7vuuksDBgzQxx9/rJEjR+rAgQPavHnzebdbsGCBJk2apLi4OPXt21eXXnqpfvvtN6WlpZX+zeA0GzduVLt27TRw4EBNnDhR06ZN07hx41SrVi1NnTpV7du318qVKzV69Oiz7sMwDD388MO66aab9Pvvv5f42B06dNCaNWuKBVn5+fnavn273nrrLXXv3l0PPvigsrKyzri90+mUJLVp00ajRo3SunXrVFBQoMzMTC1dulR//vnneWuwWCz673//q06dOmnZsmXKyckpcf3jx4/XiRMn9Pbbb+vo0aMl3q5IZmamevTooalTp2rnzp2l3h6n89TnuXXr1mrRooXeeeedc/5dnuv/LT7PAAAAqG6sni4AAABUP7/99pv+85//aMuWLerevbseeOABNW/eXEePHtUrr7yir7/+Wr169dKtt96q4OBgvfrqq7JarcrOzlZWVpYeffRRxcTEnLbfsWPHasSIEdq6datuvPFGSdIVV1xx3npMJpNWr16tdevW6YYbbtB1112nX375RQ6HQ6NGjdK2bdt05513atKkSeX+vagJ2rdvrz59+iglJUVz5szRhx9+qL/++ktz5szRwIEDlZKSooCAAL344otn3H716tV67bXXlJ6eroEDByo4OLjY65mZmbLZbPLx8TltW39/f0nSsGHDJBWOyPjuu+/UsWNHXXvttcrNzdVnn32mBg0a6M477yy27W+//abFixdrwoQJOnz4sPz9/dWhQwcNHjxY8fHxysvLk2EYmjp1qu6+++5zfg+CgoI0a9YsxcbGavny5dqxY4duvvlmNW3a9JzbBQYGqn79+nI4HOdd9/jx4/rqq6/UoUMHtW3b1r39kCFD9Oabb2rQoEFq1arVOfeB8/Pk5zkyMlKBgYFq27atnE6nEhMTdfDgQcXGxmrHjh1av3699u/fr+uvv17//ve/i23L5xmnWr58uV5++WXt379frVq1UrNmzbR7927VqVNHEydOVLdu3U7bZs+ePXrnnXeUmpqq2rVrKzU1VTk5ORo2bJiuueaaYusahqGlS5fqs88+k5+fn8LDw3XixAnl5+dr+vTp6tKlyxnrSk5O1ty5c7V161bVrl1bAQEB2r9/vxo2bKgnnnhCgYGBFfL9AAAAVRcBBgAAKHedO3dWt27dtGXLFvXt21fNmzeXJPcNu88++0ytWrWSw+HQNddco9tvv11DhgyRJH3zzTfatm3bGQOMyy+/XP7+/qpTp457WUFBgRYsWKCNGzdqzJgx6tSp02nbLV26VBMnTnTfUCm6WZaamqqnn35a8+fPV0ZGRvl+E2qYUaNGaerUqfr888+1du1a1atXT48++qiaNGmi1157TXfeeacuvfTS07bbv3+/cnNz5e/vr/T0dM2YMUOLFy/WihUrlJaWpr/++ksbN25UcHCw/vnPf2rgwIHFtk9KSlL9+vWVmJiorVu36vnnn9cjjzwip9OpWbNmqXnz5nrsscdOuxF64sQJPfjgg3K5XLLb7frjjz/UunVr3XbbbYqOjpafn58GDBggSdq5c6cyMjIUFBRUbB/vvPOOFi1apKZNmyohIUFxcXEyDEMWi0VxcXF69913NWvWLPXo0eOc3zsfHx8FBARo5cqVWr16tTZs2KDLLrtMTz75ZLH1wsPD9dVXX+nFF1/U8uXLFRUVJUlq0KCBpMJ/dxs3btSaNWs0c+ZMmc0Mtr5Qnvo82+121a9fX0ePHtXkyZOVk5Ojtm3bKi4uTrt27dL06dPl7+8vX1/fYtvxecbfXXPNNUpLS9PDDz+snj176u6771ZKSoquueYaTZ06VZ9++mmx/xc/+eQTPf744xozZoyeffZZ9/Jly5bp7rvv1vXXX69nn31WFotFTqdTd999t1avXq0PP/xQLVu2dK//xhtvaNOmTWcMMPbt26exY8eqVatWevvtt93nBOnp6Ro3bpzS0tIIMAAAwGkIMAAAqAIMw1COh6YT9/MtHMFQVrGxsXrrrbf06KOPKiQkRFJhgHDs2DFt3rxZAwcOlN1uV//+/RUXF+febuPGjdqxY4fq1q2rpKQkWa1Wffvtt1q3bp0kac2aNYqJidGaNWu0YsUKvfHGG+rdu7d7+8WLF6ugoEC33367OnXqpIceekh9+/aV1WrVQw89JJfLpbFjx2rUqFFlfo9lZRiGlJ/vuQLs9gv+u77ssssUHBysnTt3Ki8vTz4+Pvrss8904MABtWnTRmPHjj3jdtHR0bLZbPLz81N6erpuueUWtWrVSh9++KHeeustTZ48WW+88YYWLlxY7HNR5NChQ2rfvr1+/fVXvf/++/r444/VvHlzDR8+XH5+fvrkk09kNpuVm5tb7KbviRMnFBcXp9dee03XXnutbrrpJq1evVphYWHasGGDRowYoVmzZp3zKfIuXbro+eefV7t27XTPPfeoUaNG8vHx0Zw5c/Tyyy9r7NixZ3zK+e8Mw1B6erqWLl2qkJAQDRs2TF27dj1tPavVqquvvlp79uxRXFyclixZosjISLlcLtlsNjkcDj3xxBPavXu3/Pz8NHXq1PMeuyIZhiEVZHuuAJt/lfk8OxwOHThwQEeOHNGxY8c0c+ZMPfPMM2rXrp0OHTqkhx56SBaLRV26dDnjqDM+zxXPkz+HpQv7Wfz30KdWrVpq3Lix/vzzTx06dMgdYGzfvl2PPfaYIiMj9Y9//KPYNn379tWaNWv08ccfq3Xr1ho/frwWLlzoDjZODS8kacqUKfr2229Pq8UwDHeI8sQTTxQbgRQcHKy77rpLdru9VO/v1H1Lxb8/LpdLZrNZLpdLJpOpXM5jAACAZxBgAADg5QzD0Ijpqfp9W4FHjn95W5s+mBVapov/jRs3asmSJXrqqaeK3UQODw9XmzZt9Mknn2jVqlW64YYbNGrUKDVs2NC9TlhYmJ577jm1aNFCEydOVHBwsHr06KGxY8fq6quv1iOPPKJmzZppxYoV8vHxUbt27dzbvvTSS5o3b5569uypBx98UFFRUapXr57mzJmjiIgItW/fXldccYW++OIL1a9fX3369Lng91hWhmEo/9X/yNi/32M1mKJjZL/zrgv6uy4oKNDw4cP1119/KTc3V1dffbWioqK0Z88ePfbYY6fdmPrrr780bdo0paWlqUmTJtq9e7d69OihF198UTabTYsWLVJERIRq1aql48ePq2PHju4bmAsXLtSOHTt04sQJbdmyRa1bt1ZsbKyaNGmiiy66SImJiRo5cqSefvpp3XfffdqxY4f27dtXbNqdiy++WF988YVatmypjz76SKmpqbrjjjv03XffaceOHfrll180fPjwc77noqmBYmJiFBMTo9TUVG3fvl1fffWVGjZsqLvvvrtET407nU5dccUV+te//nXedWvVqiWz2az33ntPYWFhatWqlZKTkyVJkyZN0lVXXaVHHnlEl1122Xn3VZEMw5DeGiAd3OC5Ihp3lDH9S6//PEtSXFycvvzyS504cUIRERGaPXu26tWrp6ysLE2aNEnHjh3TK6+8ctYp8/g8VyxP/xyWyudn8ebNm7V37161bNmyWKj08ccfy+l0qm/fvmf8O+7bt68+/vhjffTRRxo/frwWLVokSWccjWO32zV48ODTlm/btk07d+5Uy5Yt1ahRo9Nev+qqqyRJixYt0tNPP63atWvru+++06xZs/Tmm2+qY8eOWrhwofLy8rR69Wq9+uqrGj58uF555RU9/PDD2rlzp9555x35+Pho3rx5iouL07/+9S+NHTtWw4cP186dO7Vw4UJddNFFWr58ucaNG3fGOgEAgPchwAAAoAqoyg8Ozps3T0ePHlWPHj1Oa9ptMpk0f/58Pf/88/r66681b948vfvuu3riiSd00003SSq8mda2bVtZrVYNGjRI77//vvLz87Vp0yZJ0n333acRI0YoLS1N/fr1U1hYmHv/gwcPVn5+vho2bKiPP/5YH3zwgaTCG2ybN2/W0qVLZbVa5e/vf8appypf1f2LTkpK0uzZs9WtWzfVqVNHCxcuVMOGDRUREXHG9du0aaO5c+cqJCREixYt0u7du3Xo0CEtXLhQU6ZMUXR0tGbNmqXs7GytWbOm2FQnV155pdauXavrr79ee/fu1axZs3TjjTeqTp066tq1q1q3bq02bdrIarXKZDLpiSeekNlsPm1qkpYtW+qDDz7QihUr1LRpU3377bfuqcgeeeSR877nohutc+bM0euvvy5/f3/Vrl1bdevWVbt27ZSZmVns83g2BQUF7lFJ52Oz2VS7dm299tpr7mULFy5U7dq19fnnn8tms5VoP5WDz3NJPs9SYe+Lu+++W2lpaYqNjVW9evUkSQkJCcrMzNTFF1983n4/fJ4rVlX+ObxmzRr99ttv2rJli6666iq9/vrrxUK4I0eOSJLq169/xu2Llhc1Zj906JAkKSAgoMQ1lHSbYcOG6a233pJUGIbceeedevPNN92vb9y4UY888oiSk5OVmpoqX19fhYeH68EHH9Sff/6pDRs2KDw8XJdddpm2bdumKVOm6OjRo5o2bZo6duyorKwshYaG6rPPPtOAAQNksVhK/B4AAIBnEGAAAODlTCaTPpgVWmWnkOrXr597eqeiaUxOHWFRq1YtvfDCC3rggQf0ySefaPbs2XriiSc0cOBA982rNm3aaM2aNXrvvfd08OBBHT16VLt27ZIkPfjgg2rZsqV7+otTFY3amDp1qlq1aqUHH3xQN998s2w2myZMmKD7779fEydOVP/+/fXUU0/phRdeuOD3WVYmk0n2O++qslNIhYWF6Y033tA333yjEydO6J577lHt2rW1aNEijRw5Ug8++KBGjx5dbJvWrVvr2LFjWrBggerVq6e6devq66+/Vvv27TV06FDVr19fTZs21QsvvFCsEXLTpk3dN7TeeecdzZ07V0ePHtWCBQuKPdm7ZMkS+fr6qmPHjmesOSsrSxdffLFGjhypZcuW6d5775XdbldYWJiysrLOe6Nt3759kgpvuJam2bDT6ZTZbJbJZFJOTo7y8vIUHx+vN954Q2vWrNHBgwc1btw4TZgw4bQbuC6XS1br/07hDx8+LJfLJT8/v9PW/fbbb9W/f/8S11WeTCaTjOlfVtkppCrz83wqwzB04sQJ3X///eratavmzJmj9PR0mUwmLVq0SN98842GDh2qkSNHntYEnM9zxfH0z2GpbD+Lu3btqltuuUXXXXedfvvtNx09elTR0dHu14v6SiUmJp5x+5SUFElyB2vh4eGKj49XQkKCGjduXKIawsPDz3mMkuratauaNWum9evXa/Lkybrtttvcr02ZMkUbNmzQu+++q86dO+v666+XJP3888/Kzs7WyJEj3SM9AABA1UEnNAAAqgCTySR/P8/8Kuu80REREXrvvffUt29f7dy5U0OHDtWWLVskScePH9fXX38tqfCG4dSpU/XII48oNzdX6enp7n1ERkYqNTVVo0eP1mWXXaarr75aEydOVGBgoDp37qyEhARJOm1ail9//VV9+/bVnj17ZLPZ9MADD+jaa69Vr169dPXVV8tsNmvs2LEKDQ31ih4YJpNJJh8fz/26wL9rl8ulfv36acKECdq6dat8fHz0/PPPa+/evXr22Wf16KOPukfMnCojI0PTpk1T//791bVrV0VHR2vZsmW68sorNW/ePP30008KCwvTtGnT9MUXX7jnOT/V008/rbfeekt16tQ5rbGxj4+PcnJyzlp3QECA2rZtq9mzZ+vOO+/U6NGjtXz5cv3222/q3bu3XnjhBe3YseOs269du1ahoaFq0aJFKb5b0ocffqhLLrlE3bp106hRo3T55ZerUaNG8vPz08CBA5WYmKiXX365WCPdIvn5+bJYLNq/f7+mT5+udevWnfEJYofD4R5x5Ckmk0kme4DnflWRz3NsbKwWLVqkf/7zn/r666/VsGFDjRo1Sp9++qlsNpsGDRokp9Op22+/Xe3bt9fzzz9/xn4QfJ4rlid/DpfHz+IGDRpoypQpysvL08MPP1zs/9OiqZSWL19+2khJSfr9998lSTfeeGOx9X/88cczHuu33347bVn79u3VqFEjHTp0SHv37j3t9czMTG3bts395zP9f/93fw/xrrrqKrVq1UpLly7Vxo0b3VOPOZ1OSXKfe5TmGAAAwPMIMAAAQIXz9fXVq6++qmnTpikxMVFjxozRJ598ooKCAv373//WsWPH3OsePnxYHTt2dD+tKUmhoaHKyMiQy+WS3W5XfHy81q9fL5fLpddff10bNhTOs9+8efNix23Xrp3atm2rOXPm6Nlnn9WePXv0wAMPKCEhQVarVY0bN1ZCQoLefvtttW3bVlLhTRSUjtls1quvvqrJkydr6dKlevjhhyVJHTt21OLFi7Vq1Sr17t272M2i3Nxc3X333erfv7+effZZ9xO+kvTee+8pMTFRtWvXVkhIiAYOHKj7779fjz32WLHj5uXl6YUXXtCll16qhIQE3XPPPe7XnE6nkpOTz3nTb9euXRo3bpxee+01TZ06VVdffbW+/fZb+fr6qmXLlnr33Xd1ww03qFu3brrjjjvc875LhQ3oly1bdtY5489l2LBhCgsLU3R0tD799FO99tpreuihhzRx4kT3vPQtWrTQzJkzT9v24MGDOnbsmAYNGqQePXro5ptvlq+vr44dO1bse/jNN9+4p3tB6VT25/nEiRN67rnntHz5cj3yyCN67LHH9MADD6h+/fpauHBhsZET//d//6euXbtq3bp1yv/baC0+zzifSZMmqVGjRtq0aZMWLlzoXt6lSxfNnDlTu3fv1ksvvVTssx0bG6u3335bvXr10pQpUyRJM2bMUJcuXfTf//5Xq1atKnaMH374Qd98881px7bZbHrllVcUEhKi+++/v9hIDIfDoccee0x5eXmSpJCQECUmJurYsWP666+/JBWOMHI4HOd9j1OmTFFOTo4uueQS97KuXbvKZrNpwYIF+uSTT7Rp0ya99dZbysrKKsF3DQAAeBpTSAEAgHL3yy+/aOXKlZKkzz77TBdffLFat26tsLAw1alTRwkJCXr44Yfd/QqmTp2q8PBw+fr6KjIysth86FJhHwyn06kbbrhBderUUd26dRUQEKA777xTJ06c0GuvveZuAHuq3NxcTZ48WWvWrNE///lP9ejRQ/fdd59SUlJ05513KiUlRQUFBdq6datatGih33//Xbt27dItt9xSad+r6uDAgQN66KGH1L59eyUmJrrnOjebzbrttts0ffp03XfffYqPj3ffAMvKytKLL76osLAwGYah7du3KywsTAsWLNCbb76pV155Rf369ZMkjRo1SqtWrdKiRYt0zz33uBsh33HHHYqIiNBzzz2nZ555RuvWrdOBAwe0dOlSWSwW5efnn3GqnoSEBL3xxhvasmWLunTpoo0bN+qXX35Rdna2QkNDFRcXpz179ujuu+/W1q1b5efnp06dOhVr8j537lxJcr+f0rDb7erZs6dWr15dbLnL5dK6deskSc8999xp/QY2bdqkjz76SAUFBbrrrrs0cuRISVKTJk2Um5ur3r17q06dOsrIyHD3M9iwYYM6dOhQ6hprssr+PHfp0kVffvmlzGazcnJy9P777+vFF190h6oHDx50hwoWi0WvvPKK3nrrLXcPAz7POJMNGzboyy+/lCR9+eWXqlevnnv6s5kzZ+q5555TbGysRowYoVatWun2229X586dtXDhQt16662Kjo5Wenq6kpKS9OCDD2rQoEHuQNjX11dvv/22PvvsM82fP1/z589X3bp1lZGRoYMHD+qhhx46Y01t27bV119/rbffflvTpk1T7dq1FRwcrNjYWNntdvdnfvz48Xrqqac0fPhwPfzww2rUqJGioqK0fPlyNWrUSPv375dU2K/llltuKfb/fP/+/fXee+/puuuucy+Ljo7Wv//9b/373//WU089pYsuukiPP/74aX2RAACAdzIZjJsEAADlzOl0uqcBMQxDLpdLFoul2PKi9SSdt4mmYRj68ssvNWjQoDMeq2vXrrr33ns1dOjQYq+9++67euaZZxQREaHnn39erVu31osvvqiDBw+qf//+uummm3Tbbbdp7dq1euGFF/Tll1/qlltuUc+ePcv4HahZZs2apdmzZ+ujjz7Snj179I9//EOGYWjhwoXq2LGjcnJyNGPGDDVs2FDPPPPMadvHxcWpZ8+e6tWrl3r37q1+/fqdFjwkJibq7rvv1vz585WXl6f//Oc/6t27t7p16yZJSk9P1x9//KHu3bvrnXfe0fPPPy9JevnllzVgwIBi+9qx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lcVCeAEAAFASCxdna9Wa/HLb3/ZdjnLbF6o6Q2ZHniTJmpspW06G8ux+Hq4JQHWWmJioPn2Gn/X1FStWnLasMu+79+nTR7Nnz9Zzzz2nAwcOSJIaNmyoO+64QzfccEOJ9/N3ZQowunfvrgcffFBPPvmk6tevL7PZrOPHjysjI0NDhw4t8X6Kwg6b7X9NSG0222khyLZt29SkSRNdfPHFuvjiizVt2jSNHz9e33zzjex2e1neCgCUifHdMzJlxJf7fvN864n/3WomS26mYn6YK/+kI3JYfJR8wyRFdWsls5nwAgAAoKSefy1TjgrIHIICOSer6QoCamnfNdMUueYjHeo+SvlBzBQCwPtU9n33q666SldddZVSUlJkGIbCwsKUlpZWpvdQpgDjzjvv1Lp167R//37Fxsa6l1900UW6++67S7yfWrVqSZKys7PdywoKCk6bGys3N1e+vr7uP/fo0UOrVq1SbGzsGRuPAEClOfnkzdaoB+QKvPB5/U6V7Rcpc93SNUxC9WDLSlHM8jnyTTuhPHuA0odOU2SHJjIxly4AAECpFIUXA66xKziwfKZnDQoy6Yq2tvOviGovL6Su9vafSc8LAJWidu3aWvHF6aMszqUy77tPmDBB77zzTrHjStKaNWtksVjUt2/fUtVepEwBRq1atf4/e/cdHlW1tnH4t6el91BDCgEURUSKIiCKBRW7UgXpSLXrOWIvn0exHRVFBVFEDoiiglgQAioCVkQFpEqvoaT3ycz+/kiRSID0mSTPfV1qsmfN2m+CCTP72Wu9zJ8/ny+++II///wTgHbt2nHttddisZT9hcFFF13EtGnTOHToEKeffjr5+fmkpqYyaNCgEuOaNWtGWlra8V+ErVJfhohI5RU23c5u0QujQdWEDvrNVj/5pB4iPmEqjswUsn1DyR40juizm3q6LBEREZFarfv5Dpo00itsqbjg3evxP7Kbg+17lQwsFF6IiBeryevu+SdY8hgbG8v999/vmQADwNfXl/DwcB599NEKz9GpUye6d+/OypUr6d69O7/++isBAQH069eP0aNH07VrV4YNG0afPn148cUXOXz4MA0aNGDjxo2ce+65tGrVqrJfhohI5RQ23UZNt6US/I7upfnSadhzMskMbIBz6Hianhbp6bJEREREROq1sL9+Ifr7DzFMN267D4faXurpkkREyqQm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VticO73RBWS1H3XSoQZgL+f0lrxsmi97m8BDO3BZbBy8Yiixl7XDZvOe8ALgkksu4bTTTuPSSy8F4Pbbb+fiiy8ufrxbt2789ddfOJ1OHn744eLgAmDFihWMGzeOd999l06dCvYJXrNmDSNGjGDYsGH4+PiUuY7nn3+ezz//nM8//5zg4GAef/xxBg0axEcffVQijDjWBx98wM8//8zDDz9MTk4O//3vf3n33XfZu3dv8Z373333HTNnzuSuu+7CarXy5ptv8vHHH7Np0ybmzZuH1Wplw4YNDB06lK5duzJ79my2bt3Ktddey969e5k8eTIAiYmJDBw4kKioKD755BPS0tLo2bMnmzdvZs6cOacMAGrS1q1b+de//oVpltxW4eWXXyY7O5unn36aw4cP89xzzzF58mRSU1N58MEHTzjfX3/9xdNPP82qVauIioo67vFNmzYxadIkxo4dS0hICHPmzGHBggWsX7+eTz/9lKCgoOKxCxYsACAyMpJWrVphmiYfffRRcYCxZ88eHnroISZMmMD55588WBQREZG6zQD6XOOHw1G1r599k/YTvWouu3oMJS/o5DfLiIiIiEjZaBNwkarmLggwKt2cuxS27DRafjWFwEM7cNp8OXTDWJpf7n3hRVlMnjyZPXv2MHPmzBLhBcDrr7+Oj48PHTt2LD7WoUMH+vbtW65zbNq0iRkzZtCrVy+Cg4MBGDBgADt27OD1118v9Tkul4uvv/6a559/ng4dOtC1a1defPFFAJYuXUpycjJQEHJMmTKFzp0706lTJyZPnozdbufPP/9k48aNAPznP//B6XTSv39/AFq1akVMTAyLFy9mzZqCrb9efPFF0tLSuOmmm7Db7URERNCuXTv++OMPFi1aVK6v92SWL19eqeenpKTwr3/9i8zMzOOO7927l4ceeoizzz6bSy+9lMceewyAefPmnXC+2bNn8+6773L33XefcMw777zD5MmTufDCC2nXrh3PPPMMTZs2Zd++fcUre4okJiYWf1wUcBUdy8vL48477+Tss89m3Lhx5fvCRURERMrA78geWn41Bf+kfcQvmYotK83TJYmIiIjUCQowRKqa6S74j2Gt0mkd6Udpueg1/JIPkOsIJKn/bcRdeFr5l7V7mGmaPPnkk7hcLh5++OFSmymnpqaSkZHBM888Q1ZWVvHxe++9t1yrL+bOnYvb7ea0004rPtaiRQssFgsfffQReXl5xz0nPT2dIUOGlKirUaNGAFgsFux2Oy6Xi+uuuw5fX9/iMf7+/sUhiY+PDxkZGfz6668AxMXFFY9r2LAh8HegUPTfY7dEKhrz7bfflvlrLZKfn09KSkrx55mZmTz++ONMnz693HMdO+fEiRNLvfifnp7OsGHDShwr+n6d7M/q+uuv56mnniIsLOyEY3r06FFiOy6LxVL8+T/nLlrBkZ+fj8tVECLGxMQABX0vDh06xPPPP6/m3SIiIlIt8gLDcfoXbP+Z7xuAafWeVbQiIiIitZmu5IhUNXdBgEEVrsDwTT5Ay0Wv4ZN+lCy/cFIH30HMuTG1ruG10+nkvvvuo3Hjxie9875Dhw4AzJw5k4svvphJkyaxZ8+eEoHBwoUL6dChA0899dQJ5/npp58ASlwEt9vtBAcHk5qaWrxS4lihoaF069atxLF169YB0LNnTwIDA7FarVxxxRUlxuzbt4+kpCTatm1Lq1atyMzMLN5q6dgtl4r+zPbt2wdw3IqGY8fs37//hF8bFPTg6NevH1dddRVXXHEFY8aM4aqrruLrr78GYNGiRfTp04f333+fjRs3MnjwYAYPHszmzZv58ccf6dy5M7fddttxW0L906RJk7j66qtp06bNcY9FR0eX6DMBf3+/brzxxhPOeaLtu45V1C+lSHZ2Nn/99RdNmzY9bhuoQYMGAQXbXP35559YrVb69+/PokWLmDt3Li+++OIp+56IiIiIVJTLN4BtPcdwtOV5bL98LC4ff0+XJCIiIlInKMAQqWpm0RZSVbMCw//QDlp8NQV7dhoZQY3JGXEnMWc3qXXhxcGDBxk2bBhbtmxhyJAhJx17991307p1a6Bgi6IZM2Zw5ZVX8sILL5Cfnw/AF198QWZmJh9//PEJ5ykKCY5tmA0UByFFj5+My+XixRdfpGnTpjz00EMnHPf8888THBzM008/DRSEJkUrMo4NSooCC7u9oPtJ8+bNTzmmNN9//z233norQUFBLFy4kGnTprFy5Up27dpVPKZXr17ceuutAJxxxhnMmjWLWbNmcfrpp7NkyRJSUlJISEgosWLjnz744AOsVivXXnvtCcccKzMzk9dee40zzjiD2267rUzPKavXXnuN/Px8nn766RJhFhSs1nj22Wd5/PHH+d///sf06dNxOBw8/PDD3HbbbXTu3LlKaxERERHhHzeB5AeEsLdbf9z2sq8YFhEREZGTU4AhUtXcVRdgBO3bRIslU7HlZZMWHgfj7qTpaeGVntcTHn/8cVavXs2WLVsYOnQoSUlJJxwbERHBhx9+yL/+9S+aNGkCFGwN9NZbbxU30R42bBht27blzjvvrNa6n3jiCdLT05k1a1bx1kj/NHXqVNasWcO7775bvF2V1WplwoQJALz99ttkZ2cDcOTIEQCaNWsGwB133AHAnDlzOHr0aKljSvPf//4Xt9vNLbfcgs1mIzY2tsRWVafSr18/2rdvz6hRo064jdNPP/3E4sWL+de//lWmOfPz87n33ntp2LAh7777LgEBAWWu51Q+++wz5s2bx5tvvkmXLl1KHXPDDTfwwQcfMGfOHDp16sSdd97JOeecw9ixY6usDhERERFMk0Z/LCF61dzi7WNFREREpHoowBCpambVNPEO3fEbzZe9jcXlJLnx6djHjycy6tTb7nir1157jQEDBgDw+++/079/f3bu3HnC8T4+PowaNYply5bx6quvEh8fD8CHH34IQJcuXfjoo4+O679wrKLwoyg8KJKTk1Pi8RN5+umnSU5O5sMPPzxhmPDuu+/y3Xff8cknn3DmmWeWeGzYsGE888wzBAUFMXz4cP7444/i4KZom6qePXvy5ptv0qpVK0aPHs3KlSuLm0//cyurIhkZGaxfvx4o2V8jNDT0pF/PsVq3bs3cuXNPGk68+eabpKWlMXz4cAYPHsw999xT/NjgwYOZNm1a8ef5+fncc889NGnShJkzZ5arllP56quveOutt5g3b94Jvyf/9PTTT3PkyBGGDBlSXP/atWurrCYRERGpv5r8+jmNf19M+LbVNP3ls+NWYoiIiIhI1VFnMZGqVnQXVgVXYFicuTT7YR5hO34D4GhMe4JG3EJwmOMUz/RuNpuNJ554gqZNm/LSSy+xe/du+vfvz+uvv07Hjh1LjJ09e3ZxTwOr1crll1/Oueeey6WXXkpaWlqZz9m5c2d27txZHAhAQR+O9PR0AgMDS+3pUOSll17CarUyefLk4u26UlJSWLduHd27dwcKwpR169YxY8aM4m2qXC4XS5YsoVevXgDcdNNN3HTTTQD88ssvOJ1O2rRpwznnnFN8rosvvpiLL74YKOh7sW/fPho0aEDPnj1LrS07O7u4b4Xb/fddf8c2PK8KM2bMKPH53r17ufTSSwGYNWtW8XHTNHnwwQfp2LEjQ4cOLT6+Z88ekpOTj+uRUR7Lly9n3rx5zJ49m6CgoOLjn3/+Oddcc02pz/nyyy/58MMPefPNN5k4cSLPPfccVquVYcOGkZCQoF4YIiIiUilZDWIxDQPDNHEGhEAt29pVREREpDbRCgyRqlZ4QdmswI+XNTeL+ISpxeHFodO6EjJ6SK0PL441ZswYnn32Wex2OykpKQwfPpwvv/yyxJi5c+cet8VUWFgY0dHRnH766QD88MMP9OnTh5kzZ57wXDfffDMWi6V4tQLAtm3bcLlc9O7duzh0SEpKKl6VAQUXwBMTE7n//vtL9BqZP38+GzZsAGDNmjUsXryY5557rkSPjWXLlvHDDz+UWs9HH32ExWLhwQcfPGHNH330EQD333//cb07ikRERBQ/tnfvXqBgBcTu3buPG1vUR+Ofq1A2bdrEgAEDeOGFF05YS1lNnz6d6OjoEuEFFDRhL6opMzOT5OTkcs27e/duXn/9dV599dUS4cWff/7J/PnzS33Orl27ePjhh7njjjs4fPgwR48eJTY2lrZt25KZmVm8gkdERESkolJjz2Zvl77s7tqfw216eLocERERkTpNKzBEqlphDwws5QswbJmpxC+dhl/KQfLsfiT1GkyTC87Cx6f23tF17OoAl8tV/PH1119Pw4YNGT9+PFlZWdxzzz1s3LiRu+66C6vVSmZmJnfeeScvvvgiDRs2BODbb79l165dTJ06FSjYumndunVs27btuAvnRc444wxGjhzJ3LlzueOOO2jUqBEffPABsbGxxQ2mf/vtN2655RYaNWrE0qVLycvL48knn6RRo0b069eveK7c3Fy2bt3KE088AcCjjz6Ky+Xi5ptvLh6Tn5/P1q1bGTFixHG1rF69ms8++4wHHniATp06lVrvrl27mDFjBsOGDTtp02yLxcI111zDJ598wqeffspFF13EV199RXh4OBkZGSVWYkRHRwOwZcsWVq1ahdVqxd/fnwULFvDbb7/x22+/MXLkyBP2wTiVgwcPMnnyZFq3bs2KFSuKj2dlZbF161YuueQSsrKy6NmzJ+np6SxYsIAWLVoUj8vNzQUgLy/vuLmfeuopjhw5UmKbMJfLxfbt24tXghwrNzeXO++8kw4dOhQHZQCGYRT34zi2WbqIiIhImZjmcassklp19lAxIiIiIvWLAgyRqlbUA4OybyHlSDtMfMI0fDKSyPEJJq3/WGI7NCtx939tk5CQwNtvv138+aRJk0hPT+fGG29ky5YtfPLJJzgcDrKysjBNk2nTprF8+XIeeugh7rjjDhYuXMjNN99MeHg4VquVhg0bMnv27OJtn3r16sUvv/zCDTfccNI67r33XiIjIxk7diwOh4PGjRsze/ZsgoODAQgKCiIkJISoqCgsFgurVq0iOTn5hKsFwsPD2bRpE1u3bj3hOf+5RdHKlSt59NFHefbZZ08YTKxfv557772XO+64g+HDh5d4bP9BFxs253PxBQ6s1oL/Jx566CHy8vJYtmwZo0eP5vrrr2fcuHE89dRTzJ49mxYtWtClSxfOOecc+vfvz+eff87999/PgAEDGDduHBkZGXz++ed07NixUv0qlixZQl5e3gn7S4SHh2Oz2WjcuDF2u71EY+/HH3+cH3/8EYDDhw8zfPhwevfuzTXXXEN6ejrfffcdpmkWrzI5VmnbQP3nP/8hKSmJd955B8MwSoRmRT9L+fn5Ff5aRUREpP6xZacT980MDrbvRUaTVp4uR0RERKTeMUyz/nYcu7TPEQCWfRTp4UqkLjFf7wW7f+XXdtNxnX7lKcf7Ju0jPmEa9pwMsvwjyR48jqgzG9ZApdXL5XJhtVpLPeZyubBYLMcFNC6XC9M0sdnqRraak5PD66+/jr+/P/379z/hKocpU6bgdDoZMGAAjRs3Pu7xkXensPKnPDp3sPP2y6HYbbU32KouX3zxBf/+97+ZOXNm8QqXOXPm8MQTT7B48WKioqI466yzGDlyJP/+9789XK2IiHfyptfG3lSL1B2Hj7q44NqjGMBb/w3B4Tj5aypbdhotF03BJ/0ILpsP264YS3ZkTM0UKyIiInKMux5OxWYzWLGw/r0+rhtXCUW8SdG2Scapt5AKSNxO82VvY3XmkB7cFNewcUS1CK3e+mrIP8OLY4+V9tjJjtdWvr6+3HPPPaccN2HChBM+5srJYcT2kYxoAGPXvMyE+w1e+U8Ifr4KMYrs2LGDRx55hDvvvLPE9lxXXXUVzz//PLt27SI7OxuLxVLcUF1ERETkVPJ9AsgJaVgQYPj44bb7erokERERkXpHAYZIFTBNEw5tAWc25GYUHDtFE++gPRuIWz4Tiyuf1IjmGCNG07hZYE2UK7XY8h/yGHl3Cm8+F0JwUPkbxddFkydPpmPHjtx6660ljoeGhvL666/zzDPPYJomkyZNomXLlh6qUkRERDwlO8fkrx35JKe6Tz34WBYruy4aQtTPn5DY7nKcARXrGSYiIiIiFacAQ6QqrJoGnz9S4pBpOfGPV+i2X4lZNRfDdJPU5Ax8R4wgvGHduKNrw2YnHy7MYcTNfsQ006+YqjR6sD8z57v59Q8nQ25LYfpLoUSGK8R45plnyM3NLbVnTJcuXVi4cKEHqhIRERFv0e/WJLZs+7s3FidbyPqPht2mzc7erv2rrzgREREROSld+RKpCoe2AJBnDSbLJ4rDQeeRGdG+1KGRG1cQu3IOhunmSFwHAsbcWmfCC4CZH2bz/vxsevZLYtNfaphclTq0tfO/KQWhxcat+Qwcm8y+A65TP7GO8/X1JSQkxNNliIiIiJfavqvg9VJwoEFosEHnDnYspexcGrLzD1osfh2LM7eGKxQRERGRE1GAIVIV3AVvirbFjGHttT+y7YqP8Q/7xwVV06TR718R9fMCAA6f0Z3w0UMICbPXcLHV6/CRvy+oD56QzJp1Tg9WU8cY0LqVndlvhBLV2MKuvS5uHpvMXzsUFImIiIicyv23B/DyU8GMG+aPzVpyGUbYttXELp9FYOJ24r55F8Ol11ciIiIi3kABhkhVMAv20zUNKxaLgcViHPd41E/zafxHAgCJ7a+kwbA++AfUrabVAEHH9GVISzcZcWcyK370nrvYklPduN2mp8uokKLdDOKibbw/NYyWza0kHnYzaHwyazd4T1BkmrXz+ysiIiJ1m2GAxWKUuu1kdlhTXI6CVdF5gaGYpYwRERERkZqnAEOkKhSuwKCUNzqGK5+YFXOI3LwKE4OD3W6iyaCr8PWtmz9+Rdeu/zUhgO7nO8jOgXH/TuXLZTmeLQz4a0c+3a45Qp+RySSllLOJoxc49n+vRg2s/O/1MNqeYSMl1WToHSn8+Gue54orlJrm5rK+R7njwVSyshVkiIiISO2QE96UHZeOJLHtpezt0o9S95gSERERkRpXN6+gitQ0syDAMI2Sb3SM/DzivplB2I7fcBsWDl46kGY39cBhr7t3dBUFGP5+Bq8/G8JVl/rgzId7Hk3jgwXZHq1t+658XC74c3M+t4xP5uAh7+8fYVitLLP35sOMGzFsJZuih4VYeHdyKOd3tJOVZXLrvSks/c6zq122bMtn7343i7/NZcRdKaSm1b6gSEREROoB8/jXKFkNm3Oww1Wl3pQkIiIiIp6hAEOkKrgL3wAdE2BYc7NosWQqwfs24bLYOXT1SGKu7ozNVrffEBUFGIZh4LAbvPB4MP1v8MU04dHn0pk2K9PjtQFs2+li4Nhkdu7x7v2NLXY7P9iv4Kvsy7H+I8AACAywMO2FUC670EFeHtzxUCrzv6xcUJSdY/LOnCy2bCv/9+bY3bl+W+fklgnJHD7q/UGRiIiI1B+Gy0ncN+8SuXGFp0sRERERkVNQgCFSFYpXYBT8SNmy0mix+HUCDu/EafPjSO+xxFzaFqu1bocXQHF/iaI2IFarwRP/CmLMEH8AXnwjk+enZHikT0LRKZs2shAXbWXfQTcDxyazcYv39I8ojbs4FCr9cR8fg1eeCuGmq3xxuWDiU+nM/CCrwuf7ZmUuz76WwbWDk/hhdfm2pTr2j7VBhIUt21wMHJvCnv0KMURERMTzDFc+8UvfImTPn0T9vIDQ7b96uiQREREROQkFGCJVoXAFhokVn5REWi56Db/kA+T6BJF88wRiurU6vrF3HWWWcrHdMAzuGRvIv28LBGD67CwemZSOy1WzIUZREBDVxMrsN8I4o5WNo8kmg29LYfUflesfcc+jqdw8NpkDiVV7od50uWjq2kmcbSdmKVsdFLHZDP7zYBDD+vsB8PQrGbzyVsWCoozMv59z670pJCwv+7ZURac7Ld7K+2+G0ayphd37XNw8Npmt2717tYuIiIjUfabVRmaD5gC4bA7yfYM8XJGIiIiInIwCDJGqULgCwy/rKK2+nIxPxlGy/MPJGHYnMZ1iMerQPrqPPZ/OyLtSTrgtUNGlb6OU3y4jB/rz1ANBWCww77Mc7n40jby8GgwxisIVC0SGW5g1JZSO7eykZ5iMvCuF5d9XrH+EaZp8sTSXNWudXDUwiR27q+5CvdvpZFTe0zwa9iwW98lXilgsBhPvCOSu0QEAvD4ji6deyiheFVNWx2YeTmfBtlQff162bamKn2tAdJSVOW+EcVq8lcNH3NwyPpk//vTu1S4iIiJS9x1sfyWHzrqYbZePI6PpaZ4uR0REREROQgGGSFUoXIERveN7rM4cUsNjcd56F1FnNvJwYVVv7vxsVv6cx5UDkkrdFqhokcCJMpu+1/rx8v8FY7fD4m9yGfuvFDKzaqbRc3GrksLPgwItvP1SKBd1cZCTC+PvT+XzJTkVnhcgK9tk4NhkNmyu3IX6X9fmMWlyOskpf09elhjMMAzGDQvg0XsDMQz430fZ/PvJNJz5ZQ8xikZefIGD3tf44nbDg0+nM+P9U29LVbyFWOGKo0YNrMx6PYxz2thISTMZdkcK3/9SudUuIiIiIuVh8I/XQYbBgY7XkN0gxjMFiYiIiEiZKcAQqQJm8lEALKabpCZnYh9/G43iwzxcVfXKyDS5eWzycY2ei7eQOslzr7jYl2kvhOLvZ7DqFycj7kwhJa36Q4zixQHHFOfnazDl2RCuudyHfBfc90Qacz4pX/+IY1csRDW2kJRSuC3V7xW/UP/6O1nMmJvNxTcdLT5mKcdv7EG9/XnhsWBsVvhsSS63TUwlJ7dsIUZRCGG3GfzngSBG3FywLdWkVzN4aerJt6Uq7c8/NNjCjMlhdDvXTla2yej7UljybfmDIhEREZHycu/axZzW04hyJHu6FBERERGpAAUYIpVgmib5SxMw9+8DIC2yBYFjRxHewNfDlVW/iDCj1G2BinYrOtXF9q7nOnh3cighQQa//5nP4PHJHDpSvY2ezRPUZrcZPP9oMANv8sM04YkXMnhzZmaZ+0ccO2rWlDDOPcdORqbJiLtS+HZVxbal2rHn+G2oyrsT2TWX+zJlUgg+Dvj2+zxG3Z1Cesapg6JjQwjDMPj3bYHcM7ZgW6o3Z2bxxAsn3paq6Og/v8f+fgZvPh/KFRf74HTCnQ+n8VEZt6USERERqQj3jh3kTXmV0/wO8cbpc3Dkpnu6JBEREREpJ68JMJKSkrj33nt59NFHGT9+PBs3bix13LRp0+jRowft27dn1KhR7N+/v4YrFSlgulzkfzyP/M8WUnTZ1tmhG8Ghds8WVo2OvaA/+42CbYFS00tuC1RaE+8TadfGzv9eD6NBpIUt210MHJvMnn3VF2IUXXQvrTSLxeDRewMZN8wfgJemZvLsq2Vrgn1sb+2gQIPpL4VycTcHuXkwYWIqn1VgW6rGDa3lfk5penTz4Z2XQwkMMPjldydDbkvhaFLZVrsU9TExDIMxQwJ4/F9BGAa8P///27vv+Kbq/Y/jr5PV3aZlbxBkiAMVVBS3P73uvdhDkT1cIEtEwYHsPcTBUnHP616oyBC9boag7NWmu02TnN8faUILBdrSNml5Px+Pe6XpycknyWnyPd/P+X4+2Tz0WNFlqYKvRREvssNhMGVcPLdf7y9LNXJCOouWlWy1i4iIiEhxGTVqYDidAOxzx+Kz2EIbkIiIiEgIVPZ597BJYDzwwAM0atSIcePG0aVLF3r06EF6euErZFasWIHFYmHZsmVMmDCBVatWMW7cuBBFLCcy0+0mb9FCvN98A0BmVBIAEZFlM+lcUf7YkMcVt+1n1vPFW21QsNdDwpHKAgUTGMVbLtC8qY3lcxNpUNfCtp0+7u6bwl+by64JdlEMS9GxGYbBkN6xPDIoFoDnX85mxIR0PMfoH1HwpbNYIDLCYMaTCVyfX5bqocfSWPp66cpSjR4aG7ytUb3SHV9t2zhYPNNJtUSD3zd46NgvhZ27j5wo8h2hj8ndN0cxaay/LNV7n+TSf1gq2TmFX5tjlRCzWg0eHx7HPZ38iaKnZ2YwZW7xEkUiIiIiJWHExuLo25/X9p9Fvw0d8dijQh2SiIiISIWr7PPuYZHAWLt2Ld999x3t27cHoF27dqSnp7N06dJC27ndbu655x7q1q3L1VdfTatWrdi/f38oQpYTmJmdjXveHHy//orPamPdaZ3wxcf7f2dUrgTG92vz2LbTx/QFmUctCxRw6ER9UWWBfv3TX06qJOWOGtS1smxuIs2bWtm330eXfin89OvxNcEuypEm5g/V/a5onhwZh8UCb7yfw5DRaeQepX9EUS+b3WbwzJh4Ot/mL0s1blIGs4uZKAIw83ealHjwYzourvQf2ae0sLN0TiJ1a1nY+q+Xu/uksHlr0YmioyUhrv2/SGY/k0BkBHz1vZteQ12kpR/MbBWnhJhhGDzUP5YH+uaXpXopi7HPZuD1KokhIiIix8f0FV5paiQm8uS2a8k1q+4qaREREZEjqQrz7mGRwPj6668BqFatGgA2mw2n08mXX35ZaLtOnToF/+12u9m2bRs33XRTRYUpgpmejnvmdMxNm/DYItlVP5LTUsYR6/rNv4ERFn9SpXK0skABBX8TmNw+tCyQKy2/TFMJ+zXUrG5lyaxEzjw1UJYqhW9Xl74JdlFKUt7qlmujmDE+AbsdPvkql/secpGRWXTppcKJHaPQv0cNjaV/T/9qg2kLMnly+rETRYX2abXR4K47aHDXHRjW40uQNWloY/m8RE5qZGX3Xh+d+qUEE04FHSsJcXH7CBZNcxIXa7DuZ39Zqv35ZalK8hr37hLDuIf9ZalefjObB8em4c5TEkNERERKzjRN8t55G8/LyzFNk4xMH4NHpXLXfSl4yndxr4iIiEiF2L9/P5dffvkR/1eUqjDvHhazrcnJyQDY7QevirHb7cHbi/LMM89w3XXXFXpxRcqTmZyMe/pUzO3bcTti+KHdPTTZ+zxxB9Zi9WQA4IuvF+IoSyYwVWy3c9SyQMHtC8zfF5zcPrQsEIC1FJ8uCfEWFk1LpMM5DrJz4L4HXfz385L3jziSYIPpYiZXrrg4ggWTnERHG3y/No8eg12kpB6exCi4quLQiXvDMBh0TywjBvtLQb34SjYji1GWKphEsNtoePedNLz7Tiz2479ysHZNK0vnJHJqSxspLpOuA1z88OMhiaJAaEd5nc4+3cGSWU6qJ1n4Y6OHjn1S2LHLGzxGivsa33lTFJPHxWO3wQef5dJ/+JGPPxEREZEj8by+Au9nn+L9YRWed97mhx/z+O/nuaz/xX+xht0OUVElvMJGREREpJKrCvPuYZHASExMBCAr62CN+Ly8PJKSkorcfsaMGbRo0YJRo0YVu86+yPHw7d5N7rQpmHv3khPlZPV5/YhtWhcD/2zt3stnsv+uD0lodVaIIy2ZwEqA645RFiig4EqDoibqH+ofy+j7Y7nwPAfnne0oVUzRUQZzJibwn8siyPPA0DFprHgnu1T7OlTg6ruSfGy0b+vgxelOnAkG//vdQ+d+KezZV7h/xNFel4Bud0bz9Og4rFZ444McBo9KPWpZqpKsZCipJKeFF2c4OfcsO5lZJvfc7+Kzb3IPe+xjJSFanmxn6Rwn9Wpb+Ge7vyzVpq0lf5GvuTySOc8kEBUJX3/vpueQoo8/ERERkSOxNDvZP/4wDIxq1YKlQ6snGfS4O4qH+8eSmBAWp78iIiIipVK9enU+++yzI/6vKFVh3j0sRnAXX3wxAHv37gXA4/GQmprKRRdddNi2c+bM4aKLLuL2228HYM2aNezatavigpUTju+ff3BPnwouFxmxNVl7QX/imtTGKLAcwXnu1dRoczaOiLD4kyq2gr0OLm4fwXNTiy4LFNy+GPvsfFs0Cyc7C/VuKCmH3WDyY/HccYO/LNWop9JZuDSz1PsDeHRiOo8+oXbXPgAAd1ZJREFU429QVNLP39NPsbN0diK1aljYtMXL3fel8M/2g7UICpWQOsq+b7o6ihkTEnA44NOv3dz7wLHLUlnwkfXvv2T9++9hNZ2PR2yMhQWTnFx+oQO3GwaOSOWtD/2JIl8weXLsF6pxA39ZqmZNrOzZ52PKvMz8+5YsngvPi2DRtETi4wx+/F8eXYo4/kRERESOxNrmTGx33oW9azdsHS4M3h4TbeHSCyJo0cxWqNSniIiIyImgKsy7h8Vsa9u2bbnwwgtZuXIlAOvWrSMmJoY77riD3r1788ILLwDwxhtvsGnTJjZs2MCKFStYvnw5Y8eOxXK0brEix8H711+4Z82AzExcCQ34qUM/4ur5M5QFExjh1vvCNE3c7uL3WQiE3/YMf1mgaolGobJAAb5CJaTK9wTQajUYNyyOezv7y1JNnJXJpDkZxW6CfaiX3zy4iiMlteT7aNbExrK5iTSqb2XHbh8d+7j4c6O/JEGhkI7xslx+4cGyVD/8mEf3QS6SXUdZ7eJxs37gUNYPHIrPXbY9QSIiDKaPT+DmayLxemHY4+m89GpW8DUubhKiVg0rS2YnclorW/C20hweZ51mZ/GsRKonWfgz//jbvst77DuKiIjICaeoCzts7c/HetbZIYhGREREJDxVhXn30EeQb9q0aRw4cIBHH32U559/noULFxIdHc3GjRvZtm0bAPPmzeO9995j1KhRjBo1irFjx7Jp06bgUhiRsuT9+Wfy5s2B3Fz2JzXjtwt7E1crLvh7wywwsWo5vubKZW3E+HTOu2Y/n36Ve9TtiipT1PJkO8vmJhYuC7TFk7/9kXs9lAfDMHiwXywP9osBYP7iLB59Jh2vt+QJiHp1Dn7ctWxmO8qWR1a/jpVlcxNpdbKN/ck+Ovd3se5/bnzFXIERcN7ZDl6a4S9L9csf/rJUu/cWXZaqvF9nm81gwog4ut4RBcD4qRmseNffd6QkSYjEBAsvTHdy3tn+mopxsaULvGUzG8vnOqlfN//4u+/g8Vdaj4xPY+CIVFLTtKJDRESkKjBdKbgnPYt348ZQhyIiIiIS9ir7vHvpZvHKQUxMDM8+++xht3/xxRfBf3/00UcVGZKcwDyrvsfz8nIwTXbVPJW/z+9EbMIhPR0KJDCMMEtgvPGBfwK6/yOpPD06jpuujipyuyP1OgiUBeox2MXmrV469UthwSQnJzU6+DwrcgX+vZ1jcMZbGPNMOq+8nUNqusnER+Nx2IsfhN3m3/b+PjF0vq3o16M4qidZeGmmkz4Pp7Lu5zx6Dnbx+PD44O+Lm3A4rZWdZXMS6TnE/xp37JPComlOGjfwfyz7itmHoixYLAYjBsfiTLAwfUEmW//NP7ZL+NixMRbmP+vk7f/mcM5ZpW843rC+jWVzEuk1xMXGLV469U1hwWQnp59S8n1m55i88b7/7+GvTR6WzHZSs3p4/b2KiIhI8ZkpKeROmwIpKeQtmI8xcCCWBg1DHZaIiIhI2Krs8+5hswJDJFx4Pv8Mz/JlYJr8W7cdWy7qcnjyAjAKdoQIswRGg7oH/7SHPZ7Oi69kFbmd7yhX+RcsC+RKNek2yMWqtXnB31d0H5/bb4hiyrh47Db47+e59H04lazs4q/ECFQZaNvGTkz08X30xcdZeG6Kk4vaO8jJhYfHpQV/V5LXpWlj/0R94waBslQp/LGhcFmqimqYZBgG/XvEMPr+2AK3lXw/EREGd9wYFUzElFatGlaWzEnkjNY2XGkm3Qa6+H5tyUtoFVyt8892L536uti2U2WpREREKq34eCx16gJgxMVCVHSIAxIRERGR8qQEhkg+0zTJe/cdPG+/BcCmRpews8MdxMQcYSK2YAmpip7NPwar1R/PqS39sU+YlsGMhYf3jwj+eITwk5wHywJlZZkMGpV68JcheMr/uSySuRMTiIqElT+46Tk4pdhlgQLP3VJG71VUpMGspxK49oqIQj0wSrr7enWsLJvjL0t1IMWkywAXa392H+xDUcGf0p1vi+bZsfE0qm/lsg4RFfvgh3DGW3h+mpPz29nJyja59wEXnxyjLNrR1Khu4d8d/rJoGzYfX1kqERERCQ3DasXeoyfW8y/AMXgolurVQx2SiIiIiJQjJTBE8DcB9Lz6Ct5PPwHg92bXkHz+dURFHflPJNADw2dYQzKZfzSB1QYjhsQy+F5//4iZi7IYPyUDX4GGDabv2JP6gbJAV1zkwFuw7UeInnOHcyN4floi8XEG63/10Ll/Cnv3H/uK+mCupgzjdtgNJj4az903+0tSRUcbpVoxUS3JwuJZTtqeYSc9w6TXEBc7d4euX8P1V0by8avVuOKi0CYwAGKiLcyb6OTKSyLIy4NBI1N5/b3sY98xX8Hk0vK5iTQ/ycq+/T4690vh59/yjnxHERERCRuHNuw2HA7sd96FER9/hHuIiIiISFWhBIac8ExPHnkvvoD3u28xDYOfW95K1jmXEeE4+kS0YQZOpMKrfBQUXm3Qr0cMYx7wlwVa/Fo2wx5PI8/j/31xJ/UjIgymPZHALddEAuBwgCWEnx5nnmZnyexEalSzsGFz8coCBd6usl4sY7UaPPpgLM+MiWfquNKfRMfFWlg4xckl5/vLUmVk5q/ACLPkWCg4HAZTxsVz63WR+HwwYkI6L7xcdFm0QxWc76hVw8Li2Ym0aW0jNd2k+yAX360peVkqERERqTje1T/gnjkDM7f0qzBFREREpPJSAkNOaGZuLnnz5+P7aT0+i5V1p3bE07Y99uI0h86fETcrusZPMRyamOh0azQTH43HaoV3Pspl4IhUcnLNg028i/EUbDaD8SPieOzhOJ4eHY8lVEsw8rVoamP53ETq1y1eWSDzKP0+jpdhGNz4n0guPv/4VixERRrMfCqB6648uB+rzUbdm26g7k03YFjDL1lWUWw2g/GPxNGzo7/O9ZPTM5gy7/CyaIcq+FuL4S9LtWiakwvyy1L1ftDFx1/mlGPkIiIiUlqeb1eSt3QJ5uZN5C16DtOjEpAiIiIiJ5rwm3kVqSBmZibuWTPx/fUnXpuD1Wf0wHLGmdisxZvhDpSQMg1r2F0lX9RqgxuuimTWUwlEOOCLlW7uvd9Fenr+Vf7F3K/FYnDXTVFcc3lk2QZcSg3q+ftHFKcsUHmUkCoPdpvBxDHx9O0ezYXnOTj99Cia9OhGkx7dsNjtoQ4vpAzD4OH+Mdzfx18Wbe6LWTz2bOGyaIcqqj9JTLSFuROdXJVflmrwqDReK0FZKhEREakYlkaNIdI/7jRq1AjtEmARERERCQmNAOWEZLpcuKdPw/xnK3mOaFad1ZuIU1sGm18XbyeBBEb4/RkdabXBpRdE8NwUJ7ExBqvX57Hk9fxJ2zCf1D+aWjWsxSoLFCglVBnOey0WgyG9Y1k42UlkRCV+c8qBYRjc1zWGsQ/FYRiw/M1sHnrsYFm0Q5m+gvc9+G+Hw2DK4/Hcdr2/LNXICeksWla8slQiIiJSMSz16+PofR+2a67FduttGJVhICciIiIiZUojQDnh+Pbtwz1tCubuXeRGxrOqXR9iWjYucUmkYA+McExg5P+3qNUG7c508NJMJ0lOo0QlpMJZccoCBZM6IYjveJg+Hzl79pKzZ+9hDSxPZHffHMXkx+KxWeG9T3LpPyyV7JzDkxhFrcAIsFoNnhgeR69O/rJUT8/MYMrcY5elEhERkfJR1FjH0rQZtqv+gxHuy2hFREREpFxU8mlLkZLx7djuT14kJ5MVU50fzutHXNO6pTohCpaQwhp2k+LHWm3QuoWdZXMTqVPLv0FMdLg9g5ILlgW6tOiyQJWlhNShfG4363r3ZV3vvvjcajhd0DVXRDL7mQQiI+Cr7930GuoiLb3wxEfBVERRf+f+slSxPBAoS/VSFo9OTMfrVRJDRESkIpm5ueTNm4vnm69DHYqIiIiIhBFbqAMQqQimNw/zm1fw/PdtLG432bGJbGvWjiaWVbC9dPt0ZO7w79sIv8bKxVlt0KShjVfmJ/L+J7nc8J/w6GlxvBwOgynj4hnzTDqvvZvDyAnppKWZ9OwYfbAvSIibj0vZurh9BIumObnvwVTW/ZxH1wEuFk5xUj3Jn5wL9Mc41iqj3l1jiI+3MHZiOq+8lUN6usnTY+Jx2HW8iIiIlLfkfbnkzZpBQso/eP/8k5+2ONhbr81x7fOX34vuiyYiIiIilYsSGHJC8L39DJbV07ADOMDuhdP/+qBs9m0Jv8bKxV1tUKuGlZ4do8s9nooUKAvkjLewcGkWT8/MIDXNFywLVNlWYMixnX26gyWznPQamsofGz107JPC89Oc1KtjPWI/mKLcdVMU8bEGD49L44PPcknPTGXGhASiInXQiIiIlKeh47I4Z089etX5h3SPg2eX2FifkVYm+67spVJFRERETnRKYEiV5127Ft93H2OxgdeIIz2xVRk2ADRIPfk2GobZIowTfbWBYRg81D+WhHiDSXMymfvSwebMJ+hLUuW1PNnOsrlOegx28c92L3f3SWHRVH/Deih+75NrrogkNtZg4COpfLPKTc8hLuZNTCA+TrMfIiIi5WXvfh/Tt19GbLTB957TcCXVpknS8e/XYoELz3Uc/45EREREJGSUwJAqzfPN13hefw2r1X8Z9oHmd1Grx/gyfQxnme6tbGi1gV/vLjEkxFl4dGJ6ia7El8qpUX0by+cm0nOIi01bvHTql8ITw+MBMEqQf7jovINlqX78Xx5dBrhYODmBGtXCLFMpIiJSiZk+3yEXFRlkXHQdPdoo4SAiIiIiB+mSUqmSTJ+PvPffw/PaCjBNUuPqAOCIrPo5u8lzMziQkl/3X5P13HlTFJPHxWO3+ZMX8XF6UaqyWjWsLJmdyOmn2HClmgwdnQqUPHEVKEtVPcnCnxs9dOrrYvsubzlELCIicuLxbd6M++mnMJOTQx2KiIiIiIQ5JTCkyjG9XvKWLMb78UcA/NXk/8ip28T/S0vVvoI62eVjXoFySVpt4HfN5ZG89lwiCycnULN61T4GBBITLDw/zcl5Z9vJ8/hvK00yL1CWql4di78s1X0pbNriKdtgRURETjDejRtxz5mFuXsX7tkzMdPTQx2SiIiIiIQxJTCkSjHdbvIWLsC3bi0+w8JPLW8lvf1VWC2B+kFVe/La4zGD/7ZYICFeGYyAlifb6XBuRKjDKDHDaqX21f+h9tX/wbBW7eO3LMXGWJj/rJP/u9j/nkeWshF3oCxVsyZW9u730alvCv/7Pa8sQxURETmhWOrUxkhMBMCoVh0cKhklIiIiIkdW9evpyAnDzM7GvWAe5ubN+Kw21p7WBftprbFbDIz8rtZmFV+SYB7MX/DSDKdq9lcBFrudpn3uDXUYlVJEhMHUx+N56dVs6tUpfb4+UJaq9wMu/ve7h24DXcx+OoH2bTXhIiIiUlJGbByOvv3xfPE5thtvwrDZgIxQhyUiIiIiYUorMKRKMNPScM+Yjrl5Mx57JKvOuhf7aa2x5NeNMcz82vVVvIRUIIFht0G7MzW5KmKzGfTsGM1Vl0Ye134SEyy8MN1J+7Z2srJN7n3AxSdf5ZZRlCIiIlWXaZqYPl+h24ykJOy33pafvBAREREROTIlMKTSM5OTcU+firljO+6IWH5o14foVk2DyQv/RvkJjCpeQip4bli1F5qcUEzTJC81lbzUVMyCS2ykwsVE+8tSXXlJBHl5MGhkKq+/lx3qsERERMKW6fPhef01PK++rHGMiIiIiJSKEhhSqfl27yJ36hTMffvIjkpk9Xl9iWlWH+OQUlEG+TP7VTyBETgvrOKVsk4ovtxcVnftyequPfHl6or/UHM4DKaMi+eWayPx+WDEhHReeDkr1GGJiIiEJc/Ly/F+8zXe77/H8967oQ5HRERERCohJTCk0vL98w/u6dMg1UVGbC3WXdCfuMa1D0teAJDfAwNL1T7kA9e1WZTAECk3NpvBhBFx9Lw7CoAnp2cwZV6GriwVERE5hKVlS/+VNRYLllq1Qh2OiIiIiFRCKjoqlZJ3w1/kLVwAubm4Ehrw6/m9iKsZd8Ttgz0wjMqbwFj7s5uHxqbR+fZoet4dVWSiJpCn0QoMkfJlGAYPD4glId7ClHmZzH0xi7R0k9H3xxYuXyciInICs551NmZODkZcPNbTTgt1OCIiIiJSCSmBIZWO938/k/fC8+D1sj+pGRsu6EZcUvRR7xNIYJiVuITUN9+72bnHxzMzM9if7OPh/jGHJTECV4AbmkAVKXeGYdCnWwzxcQbjJmWw7I1s0tJ9PDU6HrtNf4MiInLiMX0+jENWPNvOvyBE0YiIiIhIVVB5L0eXE5Jn1SryFj0HXi+7a7Rmw8U9iTlG8gKoEiWkLAVyL4uWZTHqqXS83sIlawI/aepUpOJ0vCWaSWPjsVnhvU9y6T8slewclZMSEZETi+/AftzPPI1v06ZQhyIiIiIiVUjlnc2VE47ni8/xLF8Kpsm/ddqy5eKuxMRHFOu+hln5m3gHyutHRxtYLPDauzkMHZ2G231wotSnElIiIXHt/0Uy++kEIiPgq+/d9BrqIi3dF+qwREREKoTvwH7cU6dg7tqJe8E8fNu3hzokEREREakilMCQsGeaJnnvv4fnrTcB2NzwInZddCfRMSWogFYFemAEcjC3XhvJ9PEJ2O3w0Ze53PeQi8ws/y8DSY5KvNBEpNK6+PwInpvqJC7WYN3PeXQd4GJ/spIYIiJS9RkJTiz16uX/OwEjNibEEYmIiIhIVaEeGBLWTJ8Pz2sr8H67EoA/mv6HjHaXExlxjBl606TZd72JPbAOAJs71X97ZV6Bkf9fw4D/uziCBZOc9BuWyndr8ugx2MX8Sc5gAkMLMKoOw2ql5mWXBP8t4a3tGQ6WzHLSc4iLPzZ66NgnheenOalXR++diIhUXYbNhr3nPXjeehPbNddixMYedfs9+7z0fTiVvfv9if5klxL+IiIiIlI0XactYcv0eMhb/CLeb1diYvBzi5vJPPcKHMdKXgD2nD0k7fgQR85eHDl7sfhyMTHwVG9eAZGXj0B5qEB/7vZtHbw4w4kz3uDn3zx07pvCnn3+jSrxQhM5hMVu5+TBAzl58EAsdnuow5FiaHmynWVzE6lX28I/273c3SeFTVs8oQ5LRESkTJm+wkkHw+HAfsedx0xeAKxen8dvf3nYd8DHvgM+vF6wWqF6NQ1iRURERKQwrcCQsGS63eQteg7fH7/jMyysb30XtDkLu7V4awsMn79klM+wk9r1QyyGgRmdRFLduuUZdrkKrq4o8BKcfoqdJbMT6TnExcYtXgaNTD1sGxGpeI0b2Fg+L5Eeg11s3uqlU78UFkxycvopSkKJiEjl51m5Eu+P63D06YvhcJT4/oFxbf26FjrfFgWAM96gdk2tWBQRERGRwnSJi4QdMysL9+xZ+P74Ha/VzpozumM58yxsxUxe+HfiT2CYFhvOFqfhbHkaiQ3rYbdV3pn9YAkpS+HncPJJ/onShvWspGf4t6q8z1IOZZom3pwcvDk5mKZ57DtI2KhVw8qS2Ymc1sqGK9Wk2yAXq9a5Qx2WiIjIcfF8+SWeFa9gbt5E3vPPYXq9pd5XhMPglOZ2Tmlup25tGxaLRrEiIiIiUpgSGBJWzLQ03DOnY275G489ktVn3YvjtFNKfDJjkN/UmqpzFZfpy09OFPFS1K9jZdlcJy2a+RdV2SpxokYK8+XmsurOTqy6sxO+3NxQhyMllOS08MJ0J+edbScry+TeB1x8+rXeRxERqbwsTZtCRCQARp26YNEppYiIiIiUH402JWz4DuzHPW0K5o4duCNi+aFdH6JanVSqK7EMMz+BUYWaQRyrQXeNalaWzHJy+/WRDOgZU2FxicjRxcZYmP+skysucuB2w6CRqbz5QXaowxIRESkVS4MGOHr3xnbjTdhvuBFDtUtFREREpBxVndldqdR8u3bhnjYVc/9+sqMS+eG8fsQ0q1/6E6L8ElIYlkrZD8I0TfbsK7wcP38BxlEvcouPs/DEI/HceVNUOUYnIiUVEWEw7YkEbrkmEq8Xhj+RzouvZIU6LBERkWM6tFk3gKXZydguuzwE0YiIiIjIiUYJDAk539atuKdPhdRUMmJrse6C/sQ3rnVcV3MZgR4YRuUsIbVoeTYX3XiAMc+k4fX6MxdFNfEWkcrDZjMYPyKO7nf6E4wTpmUwbUGGepuIiEjYMnOyyZs1E8+3K0MdioiIiIicoGyhDkBObN6//iRv4QJwu3ElNOSX83sRXzP2+HdcyUtIbd7qAeCVt3JISzd5Zky8EhgiVYDFYjB8UCzOBAtT52cy+/ks0tJNRg6JVeNSEREJK6bbjXvGDMzt2/Bt3oQRHYP1zDNDHZaIiIiInGCUwJCQ8f78E3kvvgBeL/uTTubPC7oRn1Q2pY8O9sCwVsq6vGaBlfoffpZLRmYqNav7kzGV8OmISAGGYdC3ewzxcQaPT85gyWvZpKb5eHJUPHab/sBFRCQ8GA4HlubN8W7fBtHRGElJoQ5JRERERE5ASmBISHhWfY/n5eVgmuyqeRp/n9+RuARHme0/UEKqslZJCxSUubi9g9Xr3Xyzyh1MXCiBIVI1dLo1moQ4C8MeT+Pdj3NJz0hl2vgEIiP0Ry4iIuHBdsONYLFgbXcOltq1Qx2OiIiIiJyAKufsrlRqns8/w7N8GZgm/9Ztx5aLOhNbhskLINjEu7L2wAj0SjzvbAfPT0skPs4IlpBSlZkTi2GxUO389lQ7vz3G0Tq4S6V03ZWRzHoqgQgHfPmdm3uGukjPOLxZqoiISEU4tGG3YRjYr79ByQsRERERCRnNhkmFMU2TvHffwfP2WwBsangxuy68g5iYsl8IZFTyHhg+nz9bYRhw5ml2lsxOpEY1/3OJjamcz0lKx+Jw0HLYg7Qc9iAWRxkn+iQsXHJBBIumOomNMVjzUx5dB7g4kKwkhoiIVCzvX3/ifupJzOTkUIciIiIiIhKkmVCpEKbPh+fVV/B++gkAvze9muQLricyspwOwQI9MCqjYMPu/JenRVMbry5I5JHBsdxybWToAhORctG2jYPFM50kOQ1+3+ChY78Udu72HvuOIiIiZcD75x/kzZuHuWc37jmzMDMyQh2SiIiIiAigBIZUANPjIe+lF/B+9y0mBj+3vIWscy8nwlF+tZCCPTAq6QqMospF1a1tpfud0STEV87nJCJHd0oLO8vmJlK3loWt/3q5u08Km7d6Qh2WiIicACx162EkJgJg1KwFEREhjkhERERExE8zoVKuzNxc8hbMx7d+PT6LlXWn3Y2n7fnY7eXcyCF/BUZlTWD4AgmMyhm+lCFvTg7f3ngr3954K96cnFCHI+WsSUMby+clclIjK7v3+ujUL4Vf/8wLdVgiIlLFGfHx2Pv1x3rpZdh79sKw20MdkoiIiIgIAGXffEAqnLnrN/jrs1CHcbi8PDw//ICRkoxht7KrzpnUj1yFZcOqcn/oiIwtQOUtIRXon2ioYbfICad2TStL5yRy7/0ufv3TQ9cBLuY8k8C5Z6kHiohIZeN2m7z9UQ4prjDrbWSaGJiH9IuLBK6EZeV/wcQfG7TCUERERESKRwmMqmBZb9i3MdRRFMkGkH8B10n71sO+in18ryW6Yh+wjAR7YCiBIXJCSnJaeHGGk77DUln9Yx733O9i6uMJXH6hSnqIiFQm//0il1FPpoc6jEKs+Bjd+H08poUn/rkGCN2A066zURERERE5Bg0ZqwAzMxkD2Oa8Eq8jIdThYPPmUuPABmyeXLxWO+l1W2BEhyCRYBhkt74LZ8U/8nEL9sCwKIMhcqKKjbGwcJKTIaNT+Xylm4EjUpkwIo6bro4KdWgiIlJMaen+lRfOBIOmjcJhZbDJfbY3Odf6KwCRSbG86b08JJFYLNDhXK0uFBEREZGjUwKjKsjv97CrzSNQ8+SQhhKZsouTPpkP2VGkRSeR1akv9VrXwtBSghLx5TfBUP5C5MQWEWEwY0ICI59M560Pcxj2eDpp6SZd76icq8tERE5UDepaGdw7NtRhAOD8+wzMb37DtFg47fJGNGwcHnGJiIiIiBRFCYyqwOcFwDQsIVwADtH7/qHJpwuwubPJiKtNbre+1D85KYQRVV4+lZASkXw2m8GTI+OIjzN46dVsxk/NIDXNx4BeMUoOi4hIiblOOgtLXi55sYmk12sZ6nBERERERI5KCYyqwPQnMCjUhK9ixe78i8ZfPI/Vk0dqYkOMnvdRr2F8yOKp7MxAE+/QvaUiEkYsFoMRg2NxJliYviCTmYuySE0zGTEkVqXmRETk6Hw+f72mApJbtA9RMCIiIiIiJaPp0arA55/tNo3Q1NVN2PozTT57Dqsnj5SazbH2GUBNJS+OS7AHhuYlT3iGxULi2WeRePZZGBZ9ZJ/IDMOgf48YRt/vL/Wx+LVshj2eRp7HDHFkIiISriJS99LinYlE790S6lBEREREREpFKzCqguAKjIpPYCRtWEX9Va9hmCb7659OTM9uJFZTM77jpRJSEmBxODhlzMhQhyFhpPNt0cTHWRj+RBrvfJRLemYqUx9PIDJCHxgiInKQI3UfzT6ciS03k5M+Xcim//QnJ6luqMMSERERESkRXc5bFeTXGzIr+OrsGr9+ToPvV2CYJntPOpf43j2UvCgjwRJSmo8UkSLccFUks55KIMIBX6x0c+/9LjIyfaEOS0REwkhebCLZ1eoB4I5NwhMVF+KIRERERERKTgmMqiDQxLui3k7TpM6696i77n0Adp1yGUm97iY+QQt6yoovv4aUatuLyJFcekEEz01xEhtjsHp9Hl0HuEhOURJDRET8TKuNrZd0Z1/LDmz6Tz8lMERERESkUlICo5IzTRODQL2hCigh5fNR//vXqPnrFwDsPPs6ane7idjY0PTfqKrUA0MCvDk5fH9HR76/oyPenJxQhyNhpt2ZDl6a6STJafDbXx469k1h1x5vqMMSEZFQ8RX+DvDZI9h57s34HFEhCkhERERE5PgogVHZFTxJKecSUobXQ6Ovl1Bt4ypMDHZccDv177qSqEjNspc1n0pISQG+3Fx8ubmhDkPCVOsWdpbOSaROLQtb/vVyd58U/v7HE+qwRESkglX/7SuafjwPw5MX6lBERERERMqMEhiVnXkwgWGW4woMS14uTT57Duc/P+M1rOy8oisNbr4Qh0Mz7OUhsALD0F+oiBTDSY1sLJ+bSJOGVnbt8dGxbwq//aUJLBGRE0XNXz6j3tp3iN2zmUZfvXTwahgRERERkUpO06OVnVnw5KR83k5rbhYnfTKPuF0b8Fgd7L7uXhpdfTYOu5IX5SVwzqkSUiJSXHVqWVk2J5HWLWykuEy69Hexer071GGJiEgFSK/THK8tAoCs6g21jFdEREREqgwlMCq7giWkymEFhi0rlab/nUXMvn9w26LYe3Nfmlx2CjabTorKU/4CjPKuCiYiVUxSooWXZjo550w7mVkm9wx18cW3Kj8mIlLVZVdvwJbLerL93FvYe8b/KYEhIiIiIlWGpkcruwIrMMwyrjfkSNtPsw9nEuXaTU5EHMl3DaBJh6ZYtCyg3B3sgaHXWkRKJjbGwoLJTi7t4CDXDf2Hp/LOR2oALyJSpRzSrBsgs04zDrS8IATBiIiIiIiUHyUwKjtf+fTAiEzeSbP/ziQiI5ms6GqkdRlEo7YNNKFeQUyffw2GXm4RKY3ICIMZExK48T+ReL3w0GNpLHktK9RhiYiccAJ9zcqSNTeLZv+dRdKGVWW/cxERERGRMGMLdQBynH589eC/LWWTwIjeu4Umnz2HzZ1Nelwd3N360vDkxDLZtxRPfv5CJaQEDIP4U1sH/y1SXHabwVOj4oiPNVj8WjaPT87AlWbSv0e0ktEiIhXANE2emJJRpvu05OXQ9L+ziHLtJnr/v3gjokltdHqZPoaIiIiISDhRAqOy2/lr8J9lUdopbsefNPryBayePFKTGkH3+6jXKO649yslE7haT9W6xBoRwWnjx4U6DKmkLBaDkUNjcSZYmPFcJjMWZpKa5uORQbEqBygiUs4ysw4uv6hXp2yuSvHZIkiv24Io1248EbHkxlUvk/2KiIiIiIQrJTAqu/weGL80GYHdfnyTUQlbf6LhN8uw+Lwk12qBvUdPatSJLosopYQCKzB0kbSIHC/DMBjQK4b4OIPxUzN46dVs0tJNxj8Sh82mDxkRkYpwzeURZbMjw2BX2+swrTaSm52DO14JDBERERGp2pTAqOzyExhW6/GVj0ra8D31v38dA5P9DdoQ3b0LSdUdZRGhlEKgN3sZ92UXkRNY1zuiiY8zGDEhnbc+zCEt3cfUxxOIiFASQ0SkvFmtx/FZ6/MWLhVrWNh91jXHH5SIiIiISCWg6dHKLr/WkFnamW7TpOYvn9Hg+9cwMNnTrD3x93ZT8iLEfCohJfm8OTn80KUHP3TpgTcnJ9ThSCV309VRzHwyAYcDPl/p5t4HXGRk+kIdloiIHEHctt9p8c6z2DNdoQ5FRERERCQklMCo7IKX6pdipts0qbPuPer8+AEAu1pfTrUedxKfoIU5oRbsgaEMhgCetDQ8aWmhDkOqiMs6RLBwspOYaIMffsyj20AXyS4lMUREwk38v7/S5IvniUzdy0mfzMeamxXqkEREREREKpwSGJVdfgLDLOlb6fNS/7tXqfnblwDsOPt6ane9kdjY4ytFJWXDzF+CoR4YIlIezj3LwUsznSQ6DX7900Onvins2uMNdVgiIlJAVo2GuGMTAchOrIPPphXSIiIiInLiUQKjsivFCgzD66HRV4uptmk1JgY7OtxB/Tv/j6hIzZaHCzXxFpHydmpLO0tnJ1K7poW///HSsU8KW/71hDosERHJ54mK5+//u489p13Ovxd2wrRqlbSIiIiInHiUwKjsStjt2ZKXQ5PPFuL89xe8hpUdV3SlwU0d1MQ1zPjy31aL/kJFpBw1bWxj+dxEGje0snOPj459Uvj9r7xQhyUicmIyfQfH9vnccdX8Dbs1KBQRERGRE5RGwpVdoIl3Md5Ka04mJ308j7hdG/FYHey65h4aX302DruSF+Em0AND74yIlLe6ta0sm53IKc1tJLtMugxwsfYnd6jDEhE5oRheDw2/WUa9H948OBAUERERERElMCq9QALjGCswbJmpNPvvLGL2/4vbHs3eW/py0hWtsdk0RR6OggkM/YWKSAWolmThpZlO2rWxk5Fp0nOIiy+/zQ11WCIiJwbTpNFXL5G4ZT3V//qOWj9/HOqIRERERETChqZHK7vgMvMjv5WOtP00++9MIlP3kBORQPJdA2hyQVMsFiUvwtXBElJ6j054hkFss6bENmuqpihSruJiLSyc4uTSCxzkuqH/8FTe/Tgn1GGJiFR9hoGr0RkA+Kw2sqvVD3FAIiIiIiLhQ53gKrv8BMaRVmBEJu/kpE/mY89JJzO6Gpkd+9Lo1JoYmggNa778JRjKX4g1IoIzJj0T6jDkBBEZYTDjyQQeeSKNdz/O5aHH0khL99Hp1uhQhyYiUqW5mp6NNS+XHGctMms3DXU4IiIiIiJhQwmMyu6QRn8FRe/dwkmfLsSal0N6fF1yu/al4cnOiotNSi1YQkoJDBGpYHabwTNj4kmIz2DJa9mMm5RBappJ3+7RVSr5nZHpIzrK0Eo3EQkNnxcs1kI3HWh5foiCEREREREJXyohVdkFEhiHrMCI2/4HTT+ehzUvB1dSE3z3DqC+kheVRvBt1byaiISAxWIwamgs/Xv6V15MW5DJU9Mz8PmqRmPZPfu8dLh+P7f2TOFA8pEvBBARKQ+RKbto+dbTRO/dEupQRERERETCnhIYlV0RCQzn3z/S5PNFWLx5JNdqifW+vtRqGBeiAKU0AnOEFv2FnvC8ubmsvbcPa+/tgzdXTZWl4hiGwaB7YhkxOBaAF17JZuSEdDyeyp/E+PsfL9k58PsGDx37pbBjlzfUIYnICSIiZTdN/zuLiPQDNPnsOSJSdoc6JBERERGRsKbp0UrPzP9//1tZ7c/vaPjNMgzTx74GZxLZ+15q1I4KZYBSCsEm3lqBIaZJ7t595O7dd7C2mEgF6nZnNE+PjsNqhTc+yGHwqFRyc4/vWPzxlzw++SoXswyO6ePdx9Z/vXTsm8LmrZ7jjkVE5Fjc8dWDTbpz42vgidJFRiIiIiIiR6MERmUXLOdhUPN/n1L/h9cxMNnT7Hzi7+lKUnVHSMOT0gm+q0pgiEgYuOnqKKaPT8DhgE+/dtP7QRcZmaUvvTRoRCoDHkll5JPpx1WWaunrWZx3zX7e/m9Oie4XyHk4EwyaNraye6+PTv1S+OWPvFLHIiJSHKbVxtZLe7D3lIv5+8o+eCNjQh2SiIiIiEhYUwKjsssvIVVr+3rqrP8QgJ2tr6BajztIcKpHe2V1sDKYMhgiEh6uuCiCBZOcREcbrFqXR/dBLlJSS5fE2HfAf7/X38vhkfGlL0v1wae5uFJNHh6XxuIVWcW+XyBpUrumlSWzEzmtlY0Ul0nXgS5++NFdqlhERI7ESuHPSp89gl3tbsBnjwhRRCIiIiIilYcSGJWdz1+3u/qePwDY0fZGane5gdhYayijkuMUmFxT/kJEwsl5Zzt4aYYTZ4LBL3946NQ3hd17S94/wm4/+O+3Psxh4IjSlaWKjzv4IfnElAxmPpdZrJJSgU0sBiQ5Lbww3cl5Z9vJyjK5534Xn32jfjMiUgZMk3vrfMO8FkswvFrhJSIiIiJSGkpgVGK+Awfwbf/X/28sbO9wF/XvuJzoKM16V3Zq4i0i4eq0VnaWzUmkVg0Lm7d66dgnha3bStg/Iv8zbswDsTgc8PlKN/c+UPqyVHVr+T8sZzyXyfipGccsSxX4daBMX2yMhfnPOrniIgduNwwckcpbH2aXKhYRkQDLZx8yoP6XtIv/h5Y/LDm4xFZERERERIpN06OV1Na120l7ejK4/aUu9p56KQ1vOp+ICCUvqoRDJtdERMJJ08Y2ls9NpHEDKzt2++jYJ4U/NhT/6uLACogrLopg4WQnMdEGP/yYR7eBLpJdxZ/gC+ynX88YRt8fC8DiFdkMfyKdvKOVpTrYPiooIsJg2hMJ3HJNJF4vDHs8nRdfKX5ZKhGRQ/latibL619ylla9CRg69RIRERERKSmNoiuhnz7cRNTz04nMTcNj8fe5iDulKQ67ZrurikOvDpYTmGEQ1aA+UQ3q64CQsFKvjpWlcxJpdbKNAykmXQa4WPtz8fpHFPyMO/csBy/NdJLoNPj1T39Zql17ileWyiywn863RTPx0XisVnj7vzkMOkpZKl+BElIF2WwG40fE0f3OKAAmTMtg+sKMYpWlEhE5TP1GDN54J2O2XM+O5peEOhoRERERkUpJCYxK5odX/kfD92eTYMvmfxn1SHbU8P9CV3RVKb78C5BVQkqsERGcNXMaZ82chjVCzT4lvFRPsrB4lpO2Z9hJzzDpNcTFV98fu39EsAdFfgbh1JZ2ls5OpHZNC3//4y9LteXfY5elOjQRccNVkcx8MoGI/LJU9xyhLJV5lCSxxWIwfFAsQ3rHADBrURbjpxy7LJWIiOk9PPm6Or0Jb+9vU/HBiIiIiIhUEZoerURWPreaVisXEW3N4/vUJvT+qzNGYNZGCYwq5UhXB4uIhJu4WAsLpzi5uL2DnFzo93Aq732cc9T7BBMIBW4LlqVqaGXnHn9Zqt//OnpZqqISEZd1iGDhFH9ZqtU/5tF1oIvkFF+R9zvSZ6xhGPTtHsOYB2IxDFj8WjbDHk87elkqETmhmenpuCdPwrNqVahDERERERGpUjTrXUl8MfUrzvx5CQ6Ll7W+U5iS24lsnwMDzXRXScFJOb2vIhL+oiINZj2dwHVXRuDxwoOPpbHsjaL7RxQsx3ToR1zd2laWzU7klOY2kl35Zal+OnJZqiOtpDjnTAeLZzlJchr89qeHTv0Kl6UK9NE91kdsp1v9ZalsVnjno1wGPpJKzhHKUonIicvMysI9bQrm9m14Xl6G95f/hTokEREREZEqQwmMMGeaJp+P/4D2W17Daph8x9l47+wGdn/vCyMwC4MmuquSQKkSLawRb24uPw4YzI8DBuPNPXZpHpFQsdsMJo6Jp+MtUZgmPPZsBnNfzDysf4SvwGKIoj7jqiVZeGmmk3Zt7GRkmvQc4uLLb4s+9s3AZ2URmYjWLewsnZNInVr+slR3FyhLFYyoGEni66+MZNZT/rJUX3zr5p6hLtIzit9oXEROAFFRWE5p7f93QgJGzZqhjUdEREREpArR9GgY83h8fD7qdc7f+yEAX9g7YL/rLiKjbViCky6By0j1VlYlKiElQaZJ9rbtZG/bfvByc5EwZbEYjHkglr7dowGYMi+TZ2YWboJd8DA+Uv4gUJbq0gsc5Lqh//Ciy1IFdnWk/ZzUyMayOYk0aWhlV35Zqt/+ygsmiYvbZ+iSCyJYNNVJbIzBmp/y6FZEWSoROXEZhoHtppuxXnkVEYOHYqlVO9QhiYiIiIhUGZr1DlO5uV6+Hb6ECzK+AuDj6CuJv+MmHBH5b1mg9UX+CgxD3Z6rFFNNvEWkkjIMgyG9Y3lkUCwAi5ZnM/LJdDz5/SMKpuGOlqSNjDCY8WQC1xcoS7X09cJlqQKrOY62n7q1rSybk0jrFv6yVF0HuFjzk7+3RklyxG3bOFg8M78s1V8eOvZNYefuwxv2isiJ4dCG3YbFgv3a6zCSkkIUkYiIiIhI1aTp0TCUnZHH2mELOTdvDT4TPnDeSPVbrsRmOzjVYgT/658K8vp0qX5V4jtCXXcRkcqi+13RPDkyDosFXn8vh6Fj0nC7zWCCFo79GWe3GTwzJp7Ot/nLUo2blMHs5w+WpTpSD4xDJSX6y1Kdc6a/LNXiFdlAyZPEp7Sws2xuInVrWdjyr5eOfVP4+x9PyXYiIpWe96f1uJ+agOlyhToUEREREZEqTwmMMJO6P5tfh8/mbPNX8nwWPqh9N3WuvxCrtfDsTHCyJn8m6NFns/j9r7wKjlbKS3En5UREwtkt10YxY3wCdjt8/GUuvR90kZF55CbeRbFYDEYNjaV/T39ZqmkLMnlqegY+n3nws7IYo5nYGAsLJju5tIPj4I2l+Ixt0tDG8nmJnNQovyxVX39ZKhE5MXjXryfvhecx9+7FPWc2ZlbWse8kIiIiIiKlpgRGGNm3PZ2tj87gNOsmsn12/tu4G/WuPBtLEbUxApM+gRUYyS64uUcKa392V2DEUl6CZVHUBENEKrkrLo5gwSQn0dEG36/No+cQV/B3xU3SGobBoHtieWSwvyzVC69kM3JCOh5vyfYTGWEwY0ICN1wVAUCNpNINg2rXtLJ0TiKntrSR4jLp0t/F6vX6/hU5EVhOOilYJsrSqBFERIQ4IhERERGRqk0JjDCxY0My+ydMpYVtG2neSD5r2YsGl7QuxgS2L////dv1GuLiq+9yyzlaKU8Fm90qfSEiVUH7tg5enO7EGW/wx8aDJZeMEi4z635nNE+NisNqhTc+yOHH/5W8l4XdZvD06HhemO5k9ANxJXr8gpKcFl6c4eScs+xkZpn0Guri85X6/hWp6oyEBOz9+mO7+hpsd3fEsFpDHZKIiIiISJWmBEYY+Hv9bnKnTqWJfS/7PbGsPKsPDdqffNSJnUDdbiNYTNygTWsbObnQb1gq732cU/6By3H58PMcBo5IZduOwk0gfQXrw+svVAyDiJo1iKhZQzXFpFI7/RQ7S+ckUqvGwQ+20hzSN18TxfTxCTgKVIIqaS8Li8WgfVsHiQnH9yEbG2Nh4SQnl3Vw4HbDgEdSefu/+v4VqUpMrxez4OAMsFSvge0/V5c4CSsiIiIiIiWn6dEQ+/Obf3AsnEZdewo78xJZe34/6rVpUOz7B0pI+UwLs552ct2VEXi88OBjaSx7QzV5w9n8l7L4+Mtcrrj9ABs2H7wiucACjBJPyknVY42IoO2CubRdMBerylRIJdesiY1lcxM5pbmNc86yE1nKQ/qKiw6WpQKIjwvdh2VEflmqm66OxOuFh8elsXiFvn9FqgIzL4+85xfhefONQitkRURERESk4thCHcCJ7OcPN1Dn/QXE23LYkleTv6/oTZ3GicW678ELvgIlpCw47DBxTDwJcRksfT2bx57NIDXNpE+3aF0hFoZcqQev5uvcL4X5k5y0OdWOr2ACQ2+biFQx9etYeeN5/3fd8Xw3nXe2g9efS+R/v+fRro29rMIrFZvN4MmRccTHGbz0ajZPTPF///bvqe9fKRm328Th0DETDkzTJG/BfHx//QmAERuL7ar/hDgqEREREZETj67vDpE1r/6Phu/PJd6aw595Dfjn2n5UL2byAg4mMNy5/vJDpmlgGP6yGKPvj6Vfj2gAps7P5OkZGSfkVWP/bPeQkxu+z7tageaxqekm3Qel8O1qN2bBElKawxCRKsgwjDKZ2D+pkY2bro7Cag39h6XFYjBicCyD7o0BYMZzmYyfmoHPF77fQxJetu/ycu41++k5OIWMTN+x7yDlyjAMrG3b+n9wODAaNw5pPCIiIiIiJyolMELg2+d+oOU3zxFlzeMnTzP23nwfiXVK1kg0kI/wefNLSGEJTnYbhsHge2N5ZHAsAM+/nM2ICel4PCfGJIppmsx7KZMr70jmgUdTQx3OEQXew6lPxNPhHAfZOXDfgy4+/Pxg/XQlMMSbm8vPDzzMzw88jDdXDYJFwplhGPTvEcPo+/3fv4tXZDP8iXTyTpDvXzk+GzZ7yMoy+XZNHl0HukhOURIj1KznnIvt9jtw9B+ItUXLUIcjIiIiInJCUgKjgn099QvO/HkJdouPH7ynknV7LxKqRZV4P1nZ/smQgj0wDp3s7n5nNE+OjMNigTfez2HI6DRyw3hFQlkwTZNnZmUyeW4mADt2he/JfyCBER1lMGdiAv+5LII8Dwx7PD24jUU1pMQ0ydi0mYxNmws3SBGRsNX5tmgmPhqP1Qpv/zeHQSNSq/z3b1W1er2b67scYMW72eX+WAU/4n/700Onfins2uMt98eVg0yP57DbbB0uxKLVFyIiIiIiIaMERgXx+Xx8Of49ztnyBhYDvqEd3NWFmHhHqfZ3QTsH8XEGRn4PDJOia4nfcm0UM8YnYLfDJ1/lct9DripblsDjMRn5ZDqLlh1snhrO00WBiQqLAQ67weTH4rnjhshC26iJt4hI5XTDVZHMfDKBCAd8vtLNPQ9U3e/fquqzb3LpNdTFhs1ePvw059h3OE6BcUFCnEGdWhb+/sfL3X1S2PLv4ZPqUvZ8//6Le/zj+LZuCXUoIiIiIiJSgKZHK4DX6+Ob0a9x3t6PAPjUdjERd95OZHTpe6hfdmEEMybEYzHyExim5YiT3VdcHMGCSU6iow2+X5tHj8EuUlKr1iSK220ydEwar7+Xg8UCN13tTwSEovb4v9s9LHsji+ycoz92ILRA3slqNRg3LI7eXfz9SyIcYLWWZ6QiIlKeLusQwcIpTmKiDVb/qLJAlclbH2YzcEQqbrf/54oYTgQSGCc1trFsTiKNG1rZtcdHxz4p/PZXXvkHcALzbd+Oe+Z0zORk3PPm4tu9O9QhiYiIiIhIPiUwypk718P3w1/k3IxvAPgw+mqcd1xPROTxz0wbhoGFAj0wjrJt+7YOXpzuxJlg8L/fPXTul8KefVWjLEFmlo/7HnLx8Ze52O0wfXxCMIERiiUYz87J5LFnM7j81v2kpR95osoMJjAOvnOGYfBA31hmPpnAjAkJ2G0qISUiUpmdc6aDxbOcJDkNlQUqZ7/+mcdLr2Ydd8+vl17NYtjj6Xi90LCef7xWERX8zPwHsVigbm0ry2YnckpzG8kuk64DXKxZ7y7/IE5QRq1aWBo28v+7Tl2MhIQQRyQiIiIiIgFKYJSj7Aw3Pw5bQFv3j3hNg/ecN1Pzlsux28tuUjqwAsNnGsds+Hz6KXaWzk6kVg0Lm7b4yxL8s71ylyVwpfnoMdjFd2vyiI4yWDDJyf9dHBF8LULRMmDzVv9reiDFpMsAF/uTi05imL6DExWH+r+LI7j4/Ihyi1FERCpO6xZ2ls5JLFQW6O9/Kvf3b7j59Otc7u6TwvipGaxeX7rVCqZpMvO5TMZPzQCg6x1RDL43BqiYFRi+/OFCYDhXLcnCSzOdtGtjJyPTpNdQF19+m1v+gZyADLsd+z33Yr38Chx9+mJElbw/nYiIiIiIlA8lMMpJ2v4s/nhkFm3M33H7rLxfqyP1rr8Am7Vsr6gPNPE2sWAU491s1sTGsrmJNKpvZccuHx37uPhzY+UsS7Bnn5fOfVP4+TcPzniDF2c4ad/W31MkkMAIQQUpalQ7+Eb8udFDxz4pbN91+NW26scsInLiOKmRjeVzE2mSXxaoU9/wKgt0vKsWQunND7IZNPJguafMrJI/F5/PZPzUDGY8lwnAoHtjGDE4FktgwWxFrMDI/2/BC1LiYi0snOLk0gsc5Lqh//BU3vmo/PtxnAgObdhtREZiv+FGDEfp+tOJiIiIiEj5UAKjHOzfns4/j07nFMvfZHodfNi4Gw2uOhOLpezLAR1cgXH0ElIF1a9jZdncRFqdbGN/so/O/V2s+1/lKkvw73YPd/dJYeMWLzWrW1g6J5HTT7EHfx/KFRiBxxx0bwz16lj4Z7uXu+9LYdOWwifKgdDUqFuOxRYfjy0+PtRhiMhxqlPLyrI5ibRuEV5lgbZu83Du1fsZOCL1mP2bws2Lr2Qx/Al/uafgxQslvHohz2My/Il0Fq/IBmD0/bH07xGDYRgVOp4IlpY8ZFwQGWEw48kEbrgqAo8XHnosjaWvZ5V/QFWUaZrkvfsOeXPnYOaFTxJRRERERESKpqnTMrZzwwGSJ0zhZNsOXJ4oPm91D40uOaVckhcAFvITGBglmgivnl+W4Owz7KRnmPQc7OLrVZWjLMGfmzx07Otixy4fjepbWT4vkWZNCjdEt4RwBUZgAqJJAyvL5ybSrImVvfv9V9v+7/eDJ8rBUhFqcyFHYY2M5NzFz3Pu4uexRkaGOhwROU5Jif7v33PODJ+yQL9v8JCRafLxl7n0Guo6av+mcGGaJtMWZDBhmr/cU/c7ozjrdHv+74q/n5xck4EjUnn7vzlYrTDx0Xg63xYd/H1FjifMQ0pIFWS3GTw9Op4ut/lLG42blMGs5zODfTOk+DzvvI3300/wbdxA3ksv6DUUEREREQlzSmCUoa0/7sI9bQoN7fvYlxfHyrP60LB900JNmsucESghdeweGIeKj7Pw3BQnF7V3kJMLfR9K5YNPw7sswY+/5NGlfwr7Dvho0czG0jlO6tcpoiF64LUox3NSr9dkxbvZ/PhL4av3gufBBtSqYWXJ7EROP8WGK82k2yAX3691F9pO+QsRkRNLbIyFBZOdXNohTMoCFfiuXPdz3lH7N4UDn8/kiSkZzH7evwphSO8Yhg+KDSYbivvVn5Hp4977XXyx0k2EA2Y9lcANVxVOFIdiBcaRLkixWAxGDo1lQE9/gmX6gkyenJ5R4hUnJzrrGWeAwwGGgaV5i/Idp4uIiIiIyHFTAqOM/PX1VhzPTaO2LZXteUms7dCfBmfWL/fHtQR6YJiWUp2ARUUazHoqgWuv8JcluP/RNF5+K7uswywT36zKpcegFNLSTc463c6SWU5qVCsieQHBFS/lNeHgzjN5YGwao55M55HxaYV+F5yAyH87EhMsvDDdSfu2drKyTO59wMWnX+UesVSEiIhUfZERBjMmhEdZoMD3kTPeoHqS5aj9m0Itz2Py8Lg0lryWjWHAmAdi6ds9v9xT/vepWYzcS3KKj64DXKxen0dsjMFzU5xcekHEYdtZ8sdWZn6S4Ls1bvoPd/HnprJvwh7IQxxtOGcYBgPviWXE4FgAXnwlmxET0it1D5OKZmncBHuve7F37YbtwotCHY6IiIiIiByDpk7LwC8f/EnSqzNJsmWy2V2bPy7vR92WNSrksQM9ME5vXfqGgw67wcRH47n75ihMEx59Jp15L4VXWYIPPsuh78Op5OTChec5WDTVSXzckQ/fwLl/eVyVmJVt0m9YKh9+5i/5cWiz0KImIGKiLcx/1smVl0SQlwcDR6ayc4/3sO1EDuXNzeWXkWP4ZeQYvLmVo8ybiBRPeZUFMk2zRL0sAt9bLU+2sWyu86j9m0IpJ9dkwPBU3v04F1t+uadOtx4s9xRcfHmMp75rj5eOfVP47S8PSU6Dl2Y6aXfmEcZRh6zAeOnVLD792s2NXZPLvH9YSVZmdrszmqdHx2G1wpsf5DBoZCq5ueEzbgsnhzbrBrC2bIn1rLNDEI2IiIiIiJSUEhjHad0rP9Hgw3nEWXP5zd2Qf6/rS80mieX+uFGu3zl5ZS8iLP6T58aN7Me4x9FZrQaPPhhLn27+iYDJczN5ZlZ4JDFeeSub+8ekkeeBay6PYPbTCURFHv30PlB+oWD0ZXF1Ymqaj55DXHyzyn2wrMQhV3qaR7iC0uEwmDIunluujcTnA3f+vIdFGQw5GtMk7dffSPv1t9B0pReRchUoCzSwVwxQNmWBxk3K4Nz/7OPND4q3orJg6aJG9W0sn5vIyQX6N/38W+gbHadn+LhnqIsvvztY7un6K4su93S0l+7vfzzc3SeFLf96qVPLwtI5ibRuceQx1KHjiYzMgzvvOdjFV9+VXWI5MOYyitk37aaro5gxIQGHAz77xs29D7jIyAzf0l+hYLpcuCc+g3f1DxX+2N+symXQiNQKf1wRERERkapGCYzjsOq572j+7fNEWjz8mHcyB27uTVKd2Ap57Jp/LyVx50cAZHsjyTXijnufhmEw9L5Yhg/0P4dFy7IY9VQ6Xm/oJk3nL85kzDPpmCbcdXMUz46Nx2E/9ol9weSCO89fbqLdVfv57a/ST8LsO+ClywAX63/JIz7O4LGH/K/5oUmeQJmJohITNpvBhBFx9Lw7Knib/fhyTyIiUskZhsGAXjGMHFI2ZYE++CyHXDcMfyKdl149dlmqQ6/8r1XDypI5ibRp7e/f1H2Qi+/WlO1qg5I4kOwv97TmJ3+5p0VTnVxSVLmnQLLhCC/bb3/l0alvCrv2+GjS0MryuYmc1Mh21McOJkXy8wKxMQe/23Nyod+wsutfcqQLII7m8gsjWDjZSUy0wQ8/5tFtoItkl5IYAGZGBrnTpmDu3kXe8mV4f/21Qh9//pIsvl3jH3dGRxlYi656KiIiIiIix6AERimtnPoZp/+8HLvh43vvaWTf0YuE6lHHvmMZMbz+K/4+3HcVd65fhukou8RJj7ujGT8iDosFXns3h6Gj03C7KzaJYZomE2dlMGlOJgB9ukYz9sFYrNaSrVbIzDbp+3Aqb/83h6xsk1//KF0pjG07vXTs4+KvTR5qVLOweFYiZ51uz4/10Njz/3GEUA3D4OEBsYx7OI7Ot0XR6uSjT56IiMiJoesdZVMWqF6dgzOl46dmMPO5o6+oDF75X2Dm3BlvYdE0Jxe0s5OVbdL7QRcffVHxjcZ37vbSsV8Kv2/wl3taPNNJ2zZFl3s6WgmpNevddOnvItll0rqFjWVzEqlT69gzyofu84tv/YmcsQ/FFepfsnjF8fcvObSHVnGde5aDF2c4cSYY/Pqnh879Uti9N/z6l1S4mBisrU8FwEhMwqhdu0IfPlC5qkUzK0Puiz7m6mERERERESmaEhgl5PP5+Hr8O7Td8hYWA77kXIy7OxMbX7GX0Rv5dYt+z2jFhqzmZd5H4bbropj2RDx2O3z0ZS73PeQiM6tirujzek1GP5XOwqX+yYBhA2IZ2ie2RE3KA1dhulJNVv5w8KpRbylKcmz829/M9N8dXurXtbBsjpOWzWxHLFUR+NFylL8uwzC486YoRt8fV+KkjIiIVF1lWRaoTWt/gnzGc5mMn3rkslTBK/8P+d6KibYwd6KT/1zm7980ZHQaK94pXlmqsrB5q7/c09Z/vdStZWHZ3EROOUq5p8A44dBkzRff5tJrqIvMLJNzzrTz0kwnSYnFGwIbBVZ1zH4+M3j7pi0ef/+S2/0XrzwxJYMZCzOOq/Tmx1/6L045kFLy9/u0VnaWzUmkdk0Lm7f6+5ds3RY+/UtCwTAMbLfcivXKq3AMHoKlevWQxNG+rYOWzewlGseKiIiIiMhBSmCUgNfj5bsxr3LO3k8A+Nh2CdF33kpUVMVfQW+Y/ivrvGb5vYVXXhLJgklOoqMMvluTR4/BLlxp5ZvEcLtNho5JY8W7OVgsMH5EHD07Rh/7jocoeI6YEGdwchP/VZa+Eob/8295dO6Xwt79Pk5uYmXZnEQa1rcVfoxD5ioCj6HzVBERKY3jLQsU6M3Uv1cMo+/3r9BcvCKb4U+kk1dEWaqjlS5yOAwmPxbPHTf4+zeNeiqdBUsyD9+wjP36Zx6d+qWwe6+PkxpZWT4vkSYNj1HuqYgSUu98lEP/4ankuuHSDg4WTHYSG1P8sVPgNfntLw/TFhx83m636e9fMiSWQff6+5fMXJTF45NL379k5x7/G/f3P6VbPdG0sX9lSeMGVnbu8dGxTwp/bAh9/5KKdGjDbsNiwX7tdRgJCSGKSEREREREjpcSGMXkzvXwwyMv0jb9WwDej76GpDuuIyIyRAVt8xMYPrN8H799WwcvTHfijDf4+TcPnfumsGdf+ZQlyMzy0echFx99kYvdDtOeiOe260pXlqt2DSt2G0RHGyyencjJJ/knPbwlCP27NW66D3LhSjM5o7WNJXMSqVXj4OtdcAXG2p/cPDg2lc1bPYfVEhcRESmpc89y8NJMJ4lOf1mgTn2LXxaoYCmizrdFM/HReKxWePu/OQwckUrOIWWpfMcoXWS1GowbFkfvLv4LCp6dncnEWce32uBofvjRTdcBLlJcJqe2tLF0TiK1axaj3NMh/SqWvJbFQ4+l4fXCDVdFMGNCApERJft2PlY5J8Mw6N8jhjEPxGIYsPT1bB56LA13XslfmwZ1/cPygn2ySqpeHf/FFq1OtnEgxaRzfxdrfwpd/5KK5F2zGvfTT2KmqnG2iIiIiEhVogRGMeRkuPlp2DzOcq/HYxq8nXArtW+5DHsxmkmXFyN/0iCwAqOc5hAAOKO1nSWzE6lZ3cLGLV7u7pPCv9vLtiyBK81Hz8Euvl2TR3SUwfxnnVx5SWSp91ctycInK6qx8p1qtGhqw5I/71HcFRgff5lD7wddZGWbnN/OzvPTnDjjC/+5BBuFm/Diq9m8+3Eu13RMZs8+/4McWopDpLQsERFYIg5vWCsiVdupLe0sne0vC/T3P/6yQFv+Pfb3ry+4osL/RXXDVZHMfDKBCAd8sdLNvfcXLktVnObRhmHwQN9YHurvX22wcGkWo59Kx+st2wHIZ9/kcs/9+eWezrLz4gwnSc7ifaEGkg0mMOv5TB6fnAFAl9uieHp0PHZbycdt0dEHH/vp0XHBfx867up0azSTxsZjs8J7n+TSb1gqWdkle20s+U+gWtLxDSCqJVlYPMtJ2zPsZGSa9Bzi4qvvco9rn+HOu2Y1eUsWY+7di3vOLMyciit1JiIiIiIi5UtTrMeQvj+LPx6Zyenmn+T6rLxXqzMNb2iPLdR9C/JXYJgV9BaefJKN5fMSaVjPyo5dPjr2dfHnprJJYuzd76VLvxR++s1DQpzBC9OdnN+u6AadJVGnlpWY/IkHa/6kQHF6YLz2XjaDR6WRlwdXXRLBvInO4H4KshQoVbHvwMGJoMC/VUJKyoI1MpL2ry6j/avLsEaWPqknIpVT08Y2ls9NpHFDf1mgTn2PXRboYFPug7dd1iGChVP8ZalWr8+j60AXyYFeC4GvxmJ8b93TKYYnHonDYoEV7+YwdEwabnfZJDHe+jCbgSNScbvhsg4OFk4qXbmn8VMzmJ5f7mlgrxhGDo0NJgdK6oxTbDw8IJbFs5zcdPXRV0Zc+3+RzJmYQFQkfLPKTc/BKSUqvRkoPWUtZawFxcVaWDjFySXnO8h1Q79hqbz3ccU3Ya8olpObQ1KS/9/NmoFDSX8RERERkapCCYyjOLAtjW2PTqOVZQuZXgcfNu5Bo6vOKPVJcFk62AOj4kpY1a9jZdlcJy2a2dh3wEeX/in8+Mvx1VbetsNLxz4pbPjbS43qFpbMTuSM1mXfEN2af6T7jlF9Y9GyLEZOSMfng9uuj2TyuHgcjqLf78CtPhPiYg/fJvRHiYiIVAV1a1tZNjuRU5oXryyQeYReTOec6WDxLCdJToPf/vTQsW8Ku/Z4g6sTizu8uf36KKY9EY/dDh99kUufh1xkZh1fj6yXXs1i2OPpeL1w09WRzJiQQEQJyz1580PIyvInAkYOiWVAr5jjap5stRr06hjNOWcWvrDiSCmbi86L4PlpiSTEGaz/1UOXfsUvvRl8H8podB4VaTDzqQSuuzICjxcefCyNZW9klc3Ow4zhdOLo2x/b9Tdgu/V2jLJ6EUVEREREJOQ0uj+CXX/tJ/mpKZxk20mKJ5rPTulN40tahkXyAsDIn53wVfBbWKOalSWznJx5mp20dJOeg1P4ZlXpyhL8tdnD3X1T2LbTR8N6VpbPTaR50/JpiB4oIeU9wvyKaZpMmZvB0zP95SZ6dozmieFx2I5SbiI4IWIeTIw8MTyO66+MoH5dC61blH0iRkRETkzVkiy8NNNJuzbHLgsUXFBRxFdY6xZ2ls5JpE4tC1v+9ZeFDJSlKsk8/5WXRDL/WSfRUQbfrsmjx2AXKaklT2KYpsmMhRmMn+r//u16RxRPjjz69++RBBIX4C/31PWO6BLvoyyceZq/9GaN6hY2/O2lY98U/ilG6c1gKa8yHNrZbQYTx8TT6dYoTBMeezaDOS9kllv/kopier2Yh9QFtdSsie2K/zuuhJWIiIiIiIQfJTCK8M+PO8mbPoUGtv3syYtn5Vl9aHRek/A6IQquwCj/HhiHio+zsGiqkwvPc5CdA30fTuWDz0pWluCnX/Po0i+Ffft9tGhmY9lcJw3qlt9qksAKjKISGF6vydhnM5j7kv+qxAf6xPBw/2NfsRmYYPD5TDz5NcCjIg2eHZvAZ69VJylRf15y/HxuN7+PG8/v48bjc58YjVhFpGiBskCXXnD0skDBJt5H+Bo6qZGNZXMSadLQyq49Pp5/OTt/+5KNc85v5+DFGU6c8QY//+ahcwlWG4D/+3P8lAxmLvJ//w66N4YRg0tf7um26yNpWM/K7KcTjlnu6Xgda9zVvKm/9FfDela27/TRsY+LPzcefdVqSVfCFJfFYjD6/lj69fAndKbOz+TpGeXXhL28mbm55C2Yh+etNyvtcxARERERkeLTDOshNny9Bcdz06hpS+NfdzXWXdCPhmfWC3VYhzHIX4GRX0Kqok/foqMMZj+dwDWXR5DngfvHpPHq28VrmPjtajfdB6WQmm5y5ml2Fs90UqNa+ZbCCkyG+A7pgeHOM3nosTRefjMbw4DHHo6jd9filZsIbGGa4M2fr7GWzwISOYGZPh8p634kZd2Ph11tKiInnsgIgxlPJnD9UcoCBT4qjvZNVre2lWVzEmnd4uAXV2nmzU8/xb+io1YNC5u2+BuNb9127NUGeR6TYY+nsfg1/9hh9P2x9O9xfOWebr4mik9WVOPyC8u//0Fx5s0b1LWyfF4iLU+2sT/Zd8zSX75jJJ6Oh2EYDL43lkcGxwLw/MvZjJiQjsdTuRIAps+He94cfH/8gferL/F++kmoQxIRERERkXKmBEYBv37wB9VenUmiLYtN7jr8eUU/6rWqEeqwipa/AqOiS0gV5LAbPDs2njtvisQ0YfTT6cxfnHnU+/z38xzue9BFdg50ONfBoqlOEuLL/zlYAyWkClwYmp1j0n94Ku9/movNCpMfi+eum4p/xWZggiHXDVu3+XdsD3VzdxERqfLsNoNnxsTT+baiywIdrYRUQUmJ/rJU55zpL3noTCjdd1izJjaWzU2kcQMrO3b76Njn6I3Gc3JNBo5I5Z2PcrFaYeKj8XS+LTTlnspb9SQLi2c6aXuGnfQMf+mvL749QumvYO+S8htLdL8zmqdGxWG1whvv5zBkdBq5uZUniWFYLFjbnev/ITISy0knhTYgEREREREpd2FzvXhycjLjx48nJiaG/fv3M3DgQFq1anXYdu+++y4fffQRMTEx1KpViyFDhmApg0vV1r/yIyetfIkIq5df3Y3Ye10vatWJOe79lpdAD4xACalQsVoNHnsoDme8hXkvZTFpTiapaSYP9jv8KsoV72Qz5hl/g+yrL4/gmTHxOOwVM+FvCZZ78v83Ld3HfQ+l8uP/8oiMgBlPJnDReSW7YrPg09t3wEfdWhbOa6u+FyIiUv4sFoNRQ2NJiDeYtSiLqfMzSU3zMWxg7MGJ8GIMEWJjLCyc7OSzb3I59yzHse9wBPXrWFk6J5F7hrr4Y6OHLgNczH0mgbZtCu8zI9NH34dTWb0+jwgHTBufwKUXlP+KiVCKj7Pw3FQnQ0al8sW3bvoPT2XCiLjDylz58hNQ5d1/+uZrooiLsTBkTCqffJVL7wddzHoqgdiYynFdk619e/DkYWlyEpb69UMdjoiIiIhI2Av1vPvxCn0E+R544AEaNWrEuHHj6NKlCz169CA9Pb3QNmvXrmXcuHE8+eSTPP3006xbt4758+cf92OvXriSk799gQiLl7V5LUi+pTfVwjh5AWDkr8CIj/PnoK66NHQn/4ZhcH+fWB4e4C9LsHBpFqOfSsfrPXhF34IlmYx6yp+8uPPGSCaNrbjkBRTugbE/2UeXAS5+/F8ecbEGi6Y5S5y8gMIJjKaN/WUiKsvJv4iIVH6GYTDonkPKAo1PD/ZlKu6V/BERBtdcEUm1pOP7DqueZGHxrMKrDb4ssNogOcVH1wEuVq/PIzbG4LkpziqfvAgIlP668T+ReL0w7PF0XnzlYOmvrGyTXXv8maey7oFRlCsujmDBJCfR0Qar1uXRfVDpmrBXBNNz+Goe24UXKXkhIiIiIlJMoZx3LwthMdu6du1avvvuO9q3bw9Au3btSE9PZ+nSpYW2mzlzJq1atSIuLg6A9u3bs2jRIrKysg7bZ3HlpmZz+i+vYDNMVnrPIOeOHiRUiyz9k6ko+QmM3t3i+HB5EmefXvqrJstKr47RPPFIHBYLrHg3h6Fj0nC7TZ6dncGzs/2lpXp3ieaxh+OwVnCpJUv+423b4aVjnxT+3OihepKFJbOcpX7talSz0K6NnQva2VkyO5HaNcu3j4eIiEhRCpUF+iCHHbsqbiL8UIFG45ec72803n94Ku9+nMOuPV469k3ht788JDkNXprppN2ZoR+7lFadWiUfQtttBk+NiqPbnf6VFxOmZTBtQQauNB89B6ew5V8v0VEGZ51eMas527d18OJ0J84Eg1/+8Ddh9xa/B3vFyPOQ+/g4fP9sDXUkIiIiIiKVUijn3ctKWJSQ+vrrrwGoVq0aADabDafTyZdffkmfPn0AyMnJYfXq1fznP/8J3q9atWqkpqayfv16LrjgglI9tsOTjsWyk5/NFtS4tDYRGV9DxnE+oQpgy00BwBFhpXajsHgbAbj9+ijiYw0eGJvGR1/k8vNvB9i91z+R8lD/GO7pFJqVLYEVGB9/6b8StF4dC89Pc9KofulfO4vFYMnsxLIIT0RE5LjcfE0UcbEWho5JxZ3fJ7ocWykcVVSkwcynEnjkiTTe/TiXhx5LIzHBINllUqeWhUVTnZwURmOXklgwOYFPvszl3s6lG89YLAaPDIolMcHC1PmZzH4+i2WvZ+NKM0mIM5g/yUmdWhV3QcTpp9hZOjuRnkNcbNrixWotXXKmvJhpaeBykTlzDr9dPpCcuDDtTVeE1LTwXNEiIiIiIieWUM67l5WwOHtMTk4GwG4/eMWZ3W4P3g6QmpqK1+s9bBuAAwcOlOpx9+734c1zcvXPI/w3/K9UuwmRaQD4fq2JZdr+EMdyOGe8hf3JvmDyIjHBYPmb2Sx/Mzsk8WRlHSxnZbP5e2H0HOIKSSwiJWKa5Bx4HIDITulgVIIMq4iETEKc//vXNGHQyFRsoRzpmRAbY5CRaZLsMrHlz8vf+4ArhEGVjes6l27sWZAzwcCVauJKM7FYIDLS4IGxqWUQXclZDLBZweP1j4/Dwd79PjzueK753wByfTYOfGvHJDSvz/FY8U4O73yUE+owRERERKSSc6Wa+Ew3l19++RG3+eyzzw67LVTz7mUpLBIYiYn+q9gLLknJy8ujdu3awZ/j4+OxWq2HbQMHM0glFWE3yPHZyIluWKr7hwOHI0SXVx5DRIR/lUO4iI42iI4Oz9dK5KgMg8jaNUMdhYhUEmH1/Wv4J+mdCfr+LUpsjEFsTHi8NlYb1K5lYd9+X4X2KDuaCLuB6bPgjq2GAVQPdUClYmKax95KRERERORYLFYwPZ4S3y9U8+5lKSwSGBdffDHz589n7969tGjRAo/HQ2pqKp06dQpuExUVxTnnnMPevXuDtx04cIC4uDjatGlTqsdd+0nlWYYuIiIiInKi0DhdRERERKQoh6+yOJpQzbuXpbC4RK9t27ZceOGFrFy5EoB169YRExPDHXfcQe/evXnhhRcAGDhwIH/99VdwicsPP/xA9+7diYkJTV8FEREREREREREREZFwVBXm3Q3TDI+FzZmZmTz66KPExMSwZ88e+vfvT9OmTbn22mu57LLLGD16NOCv5fXaa6/hdDpxOp08+OCDWK0V1+xQRERERERERERERKQyqOzz7mGTwBAREREREREREREREQkIixJSIiIiIiIiIiIiIiIiBSmBISIiIiIiIiIiIiIiYUcJDBERERERERERERERCTtKYIiIiIiIiIiIiIiISNhRAkNERERERERERERERMKOEhgiIiIiIiIiIiIiIhJ2lMAQEREREREREREREZGwowSGiIiIiIiIiIiIiIiEHSUwREREKpnk5GSWLVvGxo0bQx2KiIiIiIgUoLG6iEjZsoU6gPKWnJzM+PHjiYmJYf/+/QwcOJBWrVodtt27777LRx99RExMDLVq1WLIkCFYLMrvnKiKe9zMnz+fZcuWkZqaytlnn824ceOoW7duCCKWcFHcYydg9+7d3HXXXSxZsoT69etXYKQSTop73JimyaxZs/jss8+YOHEizZo1C0G0Ei6Kc9ykpqYyceJEoqOjyc7OJiMjg9GjR5OUlBSiqCVc7N+/n3HjxnHyySczcODAIrepiPGxxupSGhqrS2lonC6lpbG6lIbG6nI8wmWsHjbMKq579+7mtGnTTNM0ze+++84899xzzbS0tELbrFmzxmzbtm3w9o4dO5pz5syp8FglfBTnuHn11VfNBQsWmDt27DA/+OADs3Xr1uZ9990XinAljBTn2AlIS0szr7/+erN58+bmtm3bKjJMCTPFPW5Gjhxp/t///Z+5f//+ig5RwlBxjpuhQ4eajzzySPDn+++/3xw+fHiFxinhxePxmMuXLzcfe+wxs3nz5ub06dOL3K6ixscaq0tpaKwupaFxupSWxupSGhqrS2mE21g9XFTRtIzf2rVr+e6772jfvj0A7dq1Iz09naVLlxbabubMmbRq1Yq4uDgA2rdvz6JFi8jKyqrwmCX0invcuN1u7rnnHurWrcvVV19Nq1at2L9/fyhCljBR3GMHIC8vj2effZa2bdtWdJgSZop73Hz++eesWLGCgQMHUq1atVCEKmGkuMfN5s2b8Xq9wZ9r1qyJ3W6v0FglvHg8Hs4++2x69ux51O0qYnyssbqUhsbqUhoap0tpaawupaGxupRWOI3Vw0mVTmB8/fXXAMEvD5vNhtPp5Msvvwxuk5OTw+rVq6levXrwtmrVqpGamsr69esrNF4JD8U5bgA6deoU/Lfb7Wbbtm3cdNNNFRWmhKHiHjumaTJ58mTuueceEhMTKzpMCTPFPW6WLl1KTEwMTZo04dlnn2Xs2LFs3769osOVMFHc46ZXr168//77zJ8/nz179gDwwAMPVGisEl4iIiI4+eSTj7pNRY2PNVaX0tBYXUpD43QpLY3VpTQ0VpfSCqexejip0j0wkpOTAQplL+12e/B28Neb83q9h20DcODAgQqKVMJJcY6bQz3zzDNcd911hU6U5MRT3GNn1qxZXH311TRo0KBC45PwVNzj5pdffqFx48aceuqpnHrqqdx33310796dDz74AIfDUaExS+gV97i54YYbcLlc7Nu3j44dO3LSSSeRmZlJQkJChcYrlUtFjY81VpfS0FhdSkPjdCktjdWlNDRWl/J0Io6Pq/QKjMAVEwWXz+Tl5RVqhhMfH4/Vaj1sG0DL/k5QxTluCpoxYwYtWrRg1KhRGIZRITFKeCrOsbN582YWLlxIz549adu2LfPnzwf8A5fXX3+9YgOWsFDcz5ycnBwiIyODP1900UVs27aNzZs3V0ygElaKe9zMnz+fvLw8HnjgAd5++20yMzPp2rUrHo+nQuOVyqWixscaq0tpaKwupaFxupSWxupSGhqrS3k6EcfHVTqBcfHFFwOwd+9ewF9HLDU1lYsuuii4TVRUFOecc05wG/Bnq+Li4mjTpk2FxivhoTjHTcCcOXO46KKLuP322wFYs2YNu3btqrhgJawU59hp2rQpP/30E2vXrmXt2rX07t0bgHfeeYdbb7214oOWkCvuZ079+vVJS0s77P42W5VeTClHUNzjZsGCBTRv3hyA2NhYevbsybZt2456pbJIRY2PNVaX0tBYXUpD43QpLY3VpTQ0VpfydCKOj6t0AqNt27ZceOGFrFy5EoB169YRExPDHXfcQe/evXnhhRcAGDhwIH/99VfwA+KHH36ge/fuxMTEhCp0CaHiHjdvvPEGmzZtYsOGDaxYsYLly5czduxYLJYq/WclR1HcY0ekoOIeN7fddhtbtmxh3759APzxxx+0a9fumPUxpWoq7nHToEEDfv755+D9kpOTadWqFTVq1AhF2BLG3G53hY+PNVaX0tBYXUpD43QpLY3VpTQ0VpeyFoqxejip8qngadOm8eijj/Loo4+yZ88eFi5cSHR0NBs3bgzWtTz77LOZNGkSI0eOxOl0cuqpp9K3b98QRy6hVJzjZt68eWzdupX33nuv0H3V7O3EVpxjR+RQxTluunfvTlpaGmPGjKF169bk5eUxbdq0EEcuoVSc42batGk888wzPP300yQlJbFz507mzZunMionuNWrV/PKK68A8NFHH1GnTh2uueaakIyPNVaX0tBYXUpD43QpLY3VpTQ0VpfSCqexergwTNM0Qx2EiIiIiIiIiIiIiIhIQVo/KyIiIiIiIiIiIiIiYUcJDBERERERERERERERCTtKYIiIiIiIiIiIiIiISNhRAkNERERERERERERERMKOEhgiIiIiIiIiIiIiIhJ2lMAQEREREREREREREZGwowSGiIiIiIiIiIiIiIiEHSUwREQqIbfbHeoQREREREREREREypUSGCIiYeTAgQP07duXO++8k06dOrFt27bDtklNTeWaa67h448/LrPHdbvdTJw4kdtvv51TTjmFbt26kZycXGb7rygZGRksWLCABx98kMsuu4w33ngj1CGJiIiIyAngl19+YdKkSfTq1Yszzzwz1OGIiIhUGbZQByAiIgc9+OCDWK1WXnnlFe677z769+/Pm2++idVqDW4zfPhwIiMjufDCC8vscfv27cuZZ57JvHnzuPrqq1m1ahWbN28mKSkpuM3GjRu577772LFjR/C2M888k5ycHA4cOEC9evW47bbbuPnmmwvFW5EiIyOpXbs2kyZNwjTNMt13SkoKd955JzExMSxfvpzIyMgy3b+IiIiIVIytW7fy6quvsmzZMrKzs7Hb7ZxxxhlYLAev8dy8eTNut5u1a9cWa5+1a9dm165drFy5srzCBuCWW27hjz/+wOfzAdC0aVPi4uLYsWMHiYmJXHXVVXTt2pX4+Pgye8wnnniCt956i2nTpnHBBRccc/v+/fuzfv16Fi1aRMuWLcssjkO9++67TJ06le3btwPQqFEjEhMTSU5OxufzcdZZZ3HLLbfQvn37cotBRETKn1ZgiIiEiT179vDdd99RvXp1AJo1a8Zff/3FL7/8Etxm0aJFrFq1imnTphEVFVUmj/vJJ5+wcuVKzj77bJKSknjxxRd55plnaNu2baHtTj75ZD7//HMeeuih4G0vv/wyb731FsuXLyc5OZmRI0cyatSoMomrNGw2G9dffz1169Yt831nZGSwe/dudu7cSU5OTpnvX0REREQqRuPGjXn44Yc55ZRTALj44otZunQpixcvDv5v+fLlJboop0aNGtx+++3lFXLQG2+8wSuvvBL8+dFHH+WVV17h448/pkGDBsyYMYOOHTuW6Xh1y5YtpKens2/fvmJtv2nTJlwuFy6Xq8xiKMr111/Pu+++G/y5a9euvPLKK3z44YdceumlvPPOO/To0YOPPvqoXOMQEZHypQSGiEiY2LNnT6GfA1f47969G4CffvqJyZMn8+ijj9K0adMye9wPP/wQgNjYWABatmzJjTfeiGEYRW5/2mmnHXZb/fr16du3LwBvvvnmYc+lOL7//vsS36e8/Pjjj6SlpRW6rUGDBnz99dd8/vnnOJ3O0AQmIiIiImUmkKAoKlHRqFEjzjrrrIoOqVhOP/30w26Ljo5m5MiRgH/l9CeffFJmjzd37ly++eYbbrrppkK379mzhz/++OOw7d9++22++eYbzjvvvDKL4Uiio6MPu81mswXPTUzT5M033zyux9i0aVNwlYeIiFQ8JTBERMJEvXr1APB4PIX+26hRI1wuF0OHDuWGG2447MTheP32229lsp9AUsU0TXbt2lXs+3k8Hl544QXuvffeMomjpA4cOFDo548//pjevXsflsAAcDqdxMTEVFRoIiIiIhJCDz744FF/b5pmWPWNq1evXnCVdknG48dit9upWbNmodv+/PNPevXqVWQCIzIykmrVqgH+sf6hpV1N08Tr9QZ/Dpz3lKWC+6xdu3ax73foucGaNWvo2bNnoTK6IiJSsdQDQ0QkTFSrVo2rrrqKzZs3Y5omv//+O2eeeSYtW7akb9++xMbGMmbMmGLvLzs7m9mzZ/PRRx8RExNDSkoKrVq1YtCgQbRq1QrwD9D37t1bJvEHVl1YrVYaNmwIwPbt25k2bRpr164lMTGRlJQULrzwQoYMGUJSUhL/+9//uP/++4PNyj/99FOmTJnCv//+S8OGDenduzc33ngjf/75Z6GryLp168bvv//OmjVrgrcNHDjwqPHt37+fZ555hjVr1pCYmIjP56NGjRrk5OSwePFiduzYwVNPPRVsjn7//fcTERHBxRdfzD333IPX6+X111/n008/Zf78+cH9rlixgmXLlpGTk4PH4yEpKYlevXpx5ZVXApCWlsbq1atZsGAB99xzD19//TUffvghkZGR9O3bl06dOpXBqy8iIiIiZWX//v1Mnz6dcePGBW8LNOneuXMndrudGjVqkJqaymWXXXbUcejff//Ns88+y549e8jNzSU2NpaJEyfSoEEDAD777DPmzZuHaZpkZ2dz5pln8tBDD5Wqh0VqairZ2dkANGnSBCjeOcGxYvz9998ZNWoU06dPp3bt2jz55JO8/vrrZGdnM3/+fN58801q1qzJpEmTAPjhhx8YOXIkn376Kd988w1z5szh559/BuDcc89lxIgRvP/++7z88ss0btyYm266iU6dOrFz504mT57MH3/8QWRkJJGRkTz44IMlboq+Y8eO4HnTGWecUeT7k5mZyeTJk/n888+pXr06mZmZNGnShA0bNvDJJ5+QlpbG+PHjee+99/B4PEyYMIH4+Hhat27N8OHD8fl8PPfcc7z11lskJCSQmprKjTfeyL333nvElewiIlJKpoiIhI3MzExz1KhR5i233GIOHTrUPHDggLlgwQKzTZs25qZNm4q9H5/PZ3bu3Nls3ry5OWPGDNM0TXPLli3m6aefbrZp08bcuHGjuW/fPnPUqFHmaaedZjZv3tycPn26+d5775mrVq066r5XrVplNm/e3GzevLnp8/lM0zTNlJQU8/bbbzebN29uLly40DRN09y7d6/Zvn17s3nz5uYPP/xgmqZpvvXWW2bz5s3Na665xszOzjZN0zS/+OKL4P6mTp1qrlu3zhwyZEjwtpUrV5qmaZorV64M3rZt2zbT6/Wa33zzTfC2gi699FKzefPm5uuvv26apmlmZWWZ//nPf8zTTz/d3Lx5s2maZvD16dy5c6H7FnyMgA8++MC88MILD9t+2rRpZvPmzc1u3bqZXq/XzM7ONq+77rpCj/3ss88G93nttdean3zyifnNN9+YZ5xxhtmyZUvz77//Lu7bKiIiIiJlKDAePPfcc83OnTsH/3fJJZeYw4YNC263YcMG84wzzjCvu+46MyMjw0xJSTHbtWsXHEMHFBwnm6Zput1us0OHDua1115rmqZper1ec+DAgeaaNWtM0zTNL7/80mzevLk5duxY0zRNc/ny5Wbz5s3NBx988JixBx7n+++/N03TNPPy8swxY8aYzZs3N/v06WN6vd5inRMcLcb9+/ebd911V5Hj48B+A2Ne0zTNjRs3mjfccMNh4/OMjAzznHPOCY73A+677z5z9+7dpmn6x+uXXXaZ2aFDBzMtLc3MysoyW7ZsabZt29ZMTk4u1mtxxRVXmB06dAj+PGnSpOD5SkGB16VFixbB85Rhw4aZzZs3Ny+99NJC2wbOKw49R3rmmWfM5s2bmx988IFpmqY5dOhQs3nz5uarr7561FhFRKTkVEJKRCSMREdH8/jjj/P6668zefJktm7dypQpU3jsscdK1Pdi1apVrF69GoA777wT8DcrvOCCC8jKymLOnDlUr16dxx9/PNg0/JxzzuHaa6/l3HPPLfbj7Nq1i7Fjx9KtWzeqV6/OggUL6NWrFwDLli3jwIEDNGnShHPOOQeA6667DqfTyaZNm3jnnXcACjUjHzx4MGeddRYTJ06kTp06ACxduhTwl9IqyGKx0Lhx42LF+cYbb/D3339z8cUXc9JJJwH+Zo3FddVVVwVXVARkZWWxcOFCAG6//XYsFguRkZHceuutAEydOhXTNHnggQeoVasWACNGjOCKK66gQ4cOtGjRAp/PV+SyexERERGpOOecc06hBt5Tp04t9PuZM2eSnZ3NnXfeSUxMDE6nkzZt2hxzv+np6ezdu5etW7eyaNEikpOTGTx4cLCk0ZNPPgnA+vXr6dKlC0uXLqVevXps3Lix2LHn5uYyc+ZM7r77bv755x/Gjh3L9OnTsVgsxTonOFqM1apVC/bVKI5mzZrRr1+/w26PiYnhrrvuAvz98rxeLykpKcTExATHyYsXL2b79u2Ypkm/fv3o3r07derUIS4ujj///LNYj9+tWzdef/11kpKSAPj8888LlaoK+Prrr1m9ejWnnHJK8DylJOcGu3bt4oUXXsBisbB06VK6dOnCb7/9Rr169fj111+LvR8RESkelZASEQlTKSkp3H///dx8883s3buXu+66i0aNGjF27NhCk/5FCfS1iIiIoEaNGsHbA0mA9evXl0mMdevWZezYsUeNoX79+sHbrFYr9erVw+VysX79eu64444i72uz2ejQoQMrVqzg33//Pe44f/jhB4BCCY+SNOK2WCyccsophW7btGkTubm5QOHnGHiN9+zZw86dO6lXrx42m//rtmCDSIfDAUBOTk7xn4iIiIiIlLvTTz+djz76KPjzqlWrgJKPJZOSkmjTpg0//fQTTz/9NBMnTuTCCy9k7NixJCcns2XLFgAmTZpUoouVCoqMjGTAgAEMGDDgsN8V55zgaDECnHrqqSWKp3Xr1kXe3rlzZ5577jl27drFJ598wp49e7jtttuCv1+3bh0AN954Iw899FCJHrOgmjVr0rt3b5566ik2btzI8uXL6dKlS6FtAu9noMwWlOzc4Oeff8bj8VCtWjWWLFlS6lhFRKR4tAJDRCQMmabJsGHDiI+Pp127dixZsoQlS5ZgmiYjRowo9n4KTpgfuv+KcmgMgZqwPp/vqPcLnEQEJvqPR2Zm5mGPmZWVddz7DbBYDn6dFqx5e6znKCIiIiLhxzAMHn744eDPgXFjacaSzz//PMOGDQv2cfjqq6949NFHC43Hf/nll7II+4iOdU5wpBjLUo0aNbj++usBWLJkCevXr+e8884L/j7w2pbFCoaOHTsGm47PmDGDlJSUQr8/3nODwP0OHDjAzp07jzdcERE5BiUwRETC0IIFC1izZg3Tpk1jxYoV1K9fH5vNxqmnnsqHH37Irl27jnr/wJL2rKwskpOTg7f/888/AJx99tnlFnvAGWecAfib6AV4vV62b98OQNu2bQ+7T8GTiMD9zj//fADsdnvwd4HnVNxETN26dQGCjw0Er3g7VOBxjrUy4uSTTyYmJqZQrABbt24FoHbt2oVWZoiIiIhI5VSSsWRBaWlpLFu2jJ49e/Lyyy/zzjvv4HA42L59O9WqVQvud/r06WzevBnwj5dff/31MrnYpjjnBEeL8WgCY+ZA0/Di6NGjBwBr1qyhTZs2hS78Oe200wD/6ojly5cHb//zzz+DKyaKKyIigj59+gD+xubTpk0r9PvjPTc49dRTg7GPHj2a9PR0ADIyMnjttddKFKuIiBybEhgiImFm3bp1TJs2jccff5wmTZqwcePG4AA5JiYG0zT566+/jrqPtm3bctlllwH+XhQAmzdv5ptvviE+Pr7QEvNAXdjU1NRixVcwyZCXl3fE7bp160atWrXYuHEja9asAeDtt9/G5XLRunVrbrzxxsPuE9ju33//5csvv6RWrVrBk4/q1asTGxsLwJgxY3j66aeZPHly8L579uwpMkYgeLXXt99+y/79+3G5XGzYsAE4eAVWQCDp8Prrr/PHH3/wwQcfFHqugX1HRUUxaNAgAF555RV8Ph9ZWVmsWLECwzAYPnx48H0LvMZFvXYej+eIr6GIiIiIlJ9Dx3dHEhhLvvvuu/h8PtauXRscwxVMNBy6n9jYWBYtWhRMGNSqVQubzcYll1wC+Pu/gf9imGuuuYaLLrqINm3asHv3bqKjo48YT8G+DkcbSxbnnOBYMbrd7uD+Cl48FBgzf/zxx/z++++8/vrreDyeQucHh74ezZs3p0OHDkRGRnLzzTcX+l23bt2CK7DHjh1Lu3btOO+883jwwQeP2m+k4PMvmKS5/fbbqVevHuAfq3/66afB311zzTVYrVZ+++03Nm3ahNvt5qeffgIOX4kReJ7vvvsuf/zxB2+++SYNGzYMxr9y5UrOO+88LrnkEtq3bx98TBERKTtKYIiIhJHk5GTuv/9+br31Vq677jqg8AlKYEK8OJPekyZNomfPnrzxxhvcdNNN9O7dmyuvvJLXXnuNxo0bs23bNh5++GF2794NwLhx4xg3blyhgf+hFixYwIQJE4I/d+3alRdeeKHIbWNjY1m6dCnXXnst999/P7fccgvz5s2jV69evPTSS0WWhlqyZAldu3alY8eOdOjQgaVLlwaTFlarldGjR1OjRg3++ecf0tLSGDBgAHXr1uXiiy/mpZdeYs+ePQwaNCj4nBYtWsSqVas455xzeOKJJ4iMjKRTp07B59G4cWO2bNnC1KlTgydYw4cPp06dOrz88stMmzaN008/nVdffZWZM2cC/pq3gdege/fuPPbYY+zfv5+rr76am2++mRo1avD8889z9dVXk5GRwaBBg4LJleHDh/Prr7/y9NNPB5fHL1iwgM8+++yY76eIiIiIlI3PPvuM7t27B0s3ffXVV3Tr1o3vvvuuyO3vu+8+unTpwoYNG+jSpQt//fUXo0aNwul08v777/PBBx/w0UcfFRonDx06lKysLC655BJ69OjB3XffTY8ePejSpQsPPPAAADfddBNjxoyhYcOGOBwOoqOjeeihh+jfv/8RY//000+59957gz8/9thjPP7444USDQUd65zAYrEcMcaNGzfSq1ev4L6GDRsWXG18zz330Lp1a9avX8+oUaOoW7cuP/30U/C5AfTr1++wc4uePXty9dVXk5CQUOj2hIQEXnzxRc477zwiIyNxOBxcdNFFPP/880RGRhb53D755BPuueee4M/z58+nb9++7NixA4fDEWwo7vP5GDhwIN27d2fdunU0bNiQWbNmUbduXXr16sXTTz/NI488wmmnnUZWVhbjxo0jIyMD8CeZmjRpwieffMKECRNo1aoVAI8++ihdunShWrVq2O12atWqxZw5c2jfvv0R3zsRESkdw6zIQugiInJEpmnSu3dv9u7dy6uvvkpERATgv3rIarXy8ssv8+qrrzJ69Gjef/99mjVrFuKIy8YPP/xA165dAY65siRUvF5vodrBh/4sIiIiIpWHz+cr1MNMinbo62SaJqZpHvG1O3SMHJhuKlgqSkREpKT0jS0iEibmz5/PunXrmDp1ajB5Af4Exvbt2/H5fGzcuJE2bdpUmeRFZXFoskLJCxEREZHKS8mL4jn0dTIM46iv3aFjZMMwlLwQEZHjZgt1ACIi4i8dNXfuXJ544gmaNGlS6He33347f//9NzfffDORkZFMmTIlRFGWvfXr1/P8888Hf37wwQc59dRT6d69e+iCEhERERERERGRsKASUiIiYWLPnj3UqlUr1GFUqKKW76s8k4iIiIiIiIiIgBIYIiIiIiIiIiIiIiIShlT4UUREREREREREREREwo4SGCIiIiIiIiIiIiIiEnaUwBARERERERERERERkbCjBIaIiIiIiIiIiIiIiIQdJTBERERERERERERERCTsKIEhIiIiIiIiIiIiIiJhRwkMEREREREREREREREJO0pgiIiIiIiIiIiIiIhI2Pl/Cr1IlRNcyM8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1600x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ks_plot(best_model.predict(oot_select).as_data_frame()[\"p1\"], oot_select.as_data_frame()[y]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "best_model._estimator_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "stackedensemble prediction progress: |███████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>指标名称</th>\n",
       "      <th>指标含义</th>\n",
       "      <th>分箱</th>\n",
       "      <th>样本总数</th>\n",
       "      <th>样本占比</th>\n",
       "      <th>好样本数</th>\n",
       "      <th>好样本占比</th>\n",
       "      <th>坏样本数</th>\n",
       "      <th>坏样本占比</th>\n",
       "      <th>坏样本率</th>\n",
       "      <th>分档WOE值</th>\n",
       "      <th>分档IV值</th>\n",
       "      <th>指标IV值</th>\n",
       "      <th>LIFT值</th>\n",
       "      <th>坏账改善</th>\n",
       "      <th>累积LIFT值</th>\n",
       "      <th>累积坏账改善</th>\n",
       "      <th>累积好样本数</th>\n",
       "      <th>累积坏样本数</th>\n",
       "      <th>分档KS值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[负无穷 , 0.0184)</td>\n",
       "      <td>1968.0000</td>\n",
       "      <td>0.0822</td>\n",
       "      <td>1959.0000</td>\n",
       "      <td>0.0831</td>\n",
       "      <td>9.0000</td>\n",
       "      <td>0.0240</td>\n",
       "      <td>0.0046</td>\n",
       "      <td>1.2421</td>\n",
       "      <td>0.0734</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.2920</td>\n",
       "      <td>-0.0634</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>23570.0000</td>\n",
       "      <td>375.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[0.0184 , 0.0248)</td>\n",
       "      <td>6493.0000</td>\n",
       "      <td>0.2712</td>\n",
       "      <td>6426.0000</td>\n",
       "      <td>0.2726</td>\n",
       "      <td>67.0000</td>\n",
       "      <td>0.1787</td>\n",
       "      <td>0.0103</td>\n",
       "      <td>0.4226</td>\n",
       "      <td>0.0397</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.6589</td>\n",
       "      <td>-0.1269</td>\n",
       "      <td>1.0634</td>\n",
       "      <td>0.7080</td>\n",
       "      <td>21611.0000</td>\n",
       "      <td>366.0000</td>\n",
       "      <td>0.0591</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[0.0248 , 0.0266)</td>\n",
       "      <td>2200.0000</td>\n",
       "      <td>0.0919</td>\n",
       "      <td>2172.0000</td>\n",
       "      <td>0.0922</td>\n",
       "      <td>28.0000</td>\n",
       "      <td>0.0747</td>\n",
       "      <td>0.0127</td>\n",
       "      <td>0.2104</td>\n",
       "      <td>0.0037</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.8127</td>\n",
       "      <td>-0.0190</td>\n",
       "      <td>1.2330</td>\n",
       "      <td>0.4264</td>\n",
       "      <td>15185.0000</td>\n",
       "      <td>299.0000</td>\n",
       "      <td>0.1531</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[0.0266 , 0.0325)</td>\n",
       "      <td>6310.0000</td>\n",
       "      <td>0.2635</td>\n",
       "      <td>6213.0000</td>\n",
       "      <td>0.2636</td>\n",
       "      <td>97.0000</td>\n",
       "      <td>0.2587</td>\n",
       "      <td>0.0154</td>\n",
       "      <td>0.0189</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.9816</td>\n",
       "      <td>-0.0066</td>\n",
       "      <td>1.3026</td>\n",
       "      <td>0.3771</td>\n",
       "      <td>13013.0000</td>\n",
       "      <td>271.0000</td>\n",
       "      <td>0.1706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[0.0325 , 0.0579)</td>\n",
       "      <td>6466.0000</td>\n",
       "      <td>0.2700</td>\n",
       "      <td>6322.0000</td>\n",
       "      <td>0.2682</td>\n",
       "      <td>144.0000</td>\n",
       "      <td>0.3840</td>\n",
       "      <td>0.0223</td>\n",
       "      <td>-0.3588</td>\n",
       "      <td>0.0415</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>1.4220</td>\n",
       "      <td>0.1561</td>\n",
       "      <td>1.5931</td>\n",
       "      <td>0.2437</td>\n",
       "      <td>6800.0000</td>\n",
       "      <td>174.0000</td>\n",
       "      <td>0.1755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[0.0579 , 正无穷)</td>\n",
       "      <td>508.0000</td>\n",
       "      <td>0.0212</td>\n",
       "      <td>478.0000</td>\n",
       "      <td>0.0203</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0.0800</td>\n",
       "      <td>0.0591</td>\n",
       "      <td>-1.3724</td>\n",
       "      <td>0.0820</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>3.7709</td>\n",
       "      <td>0.0601</td>\n",
       "      <td>3.7709</td>\n",
       "      <td>0.0601</td>\n",
       "      <td>478.0000</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0.0597</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>缺失值</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    指标名称 指标含义                 分箱      样本总数   样本占比      好样本数  好样本占比     坏样本数  坏样本占比   坏样本率  分档WOE值  分档IV值  指标IV值  LIFT值    坏账改善  累积LIFT值  累积坏账改善     累积好样本数   累积坏样本数  分档KS值\n",
       "0  score          [负无穷 , 0.0184) 1968.0000 0.0822 1959.0000 0.0831   9.0000 0.0240 0.0046  1.2421 0.0734 0.2404 0.2920 -0.0634   1.0000  0.0000 23570.0000 375.0000 0.0000\n",
       "1  score       [0.0184 , 0.0248) 6493.0000 0.2712 6426.0000 0.2726  67.0000 0.1787 0.0103  0.4226 0.0397 0.2404 0.6589 -0.1269   1.0634  0.7080 21611.0000 366.0000 0.0591\n",
       "2  score       [0.0248 , 0.0266) 2200.0000 0.0919 2172.0000 0.0922  28.0000 0.0747 0.0127  0.2104 0.0037 0.2404 0.8127 -0.0190   1.2330  0.4264 15185.0000 299.0000 0.1531\n",
       "3  score       [0.0266 , 0.0325) 6310.0000 0.2635 6213.0000 0.2636  97.0000 0.2587 0.0154  0.0189 0.0001 0.2404 0.9816 -0.0066   1.3026  0.3771 13013.0000 271.0000 0.1706\n",
       "4  score       [0.0325 , 0.0579) 6466.0000 0.2700 6322.0000 0.2682 144.0000 0.3840 0.0223 -0.3588 0.0415 0.2404 1.4220  0.1561   1.5931  0.2437  6800.0000 174.0000 0.1755\n",
       "5  score          [0.0579 , 正无穷)  508.0000 0.0212  478.0000 0.0203  30.0000 0.0800 0.0591 -1.3724 0.0820 0.2404 3.7709  0.0601   3.7709  0.0601   478.0000  30.0000 0.0597\n",
       "6  score                     缺失值    0.0000 0.0000    0.0000 0.0000   0.0000 0.0000 0.0000  0.0000 0.0000 0.0000 0.0000  0.0000   0.0000  0.0000     0.0000   0.0000 0.0000"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_bin_stats(\n",
    "    pd.DataFrame({\"score\": best_model.predict(test_select).as_data_frame()[\"p1\"], \"target\": test_select.as_data_frame()[y]})\n",
    "    , \"score\"\n",
    "    , method=\"mdlp\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "best_model.predict(test_select).as_data_frame()[\"p1\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "score_transform = StandardScoreTransformer(score0=500, pdo=50, bad_rate=train[y].mean(), greater_is_better=False)\n",
    "# score_transform = BoxCoxScoreTransformer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "stackedensemble prediction progress: |███████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-8 {color: black;background-color: white;}#sk-container-id-8 pre{padding: 0;}#sk-container-id-8 div.sk-toggleable {background-color: white;}#sk-container-id-8 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-8 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-8 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-8 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-8 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-8 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-8 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-8 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-8 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-8 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-8 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-8 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-8 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-8 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-8 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-8 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-8 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-8 div.sk-item {position: relative;z-index: 1;}#sk-container-id-8 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-8 div.sk-item::before, #sk-container-id-8 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-8 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-8 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-8 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-8 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-8 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-8 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-8 div.sk-label-container {text-align: center;}#sk-container-id-8 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-8 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-8\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StandardScoreTransformer(bad_rate=0.015661216563302636, greater_is_better=False,\n",
       "                         pdo=50, score0=500)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" checked><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">StandardScoreTransformer</label><div class=\"sk-toggleable__content\"><pre>StandardScoreTransformer(bad_rate=0.015661216563302636, greater_is_better=False,\n",
       "                         pdo=50, score0=500)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "StandardScoreTransformer(bad_rate=0.015661216563302636, greater_is_better=False,\n",
       "                         pdo=50, score0=500)"
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_transform.fit(best_model.predict(test_select).as_data_frame()[[\"p0\"]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "stackedensemble prediction progress: |███████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>指标名称</th>\n",
       "      <th>指标含义</th>\n",
       "      <th>分箱</th>\n",
       "      <th>样本总数</th>\n",
       "      <th>样本占比</th>\n",
       "      <th>好样本数</th>\n",
       "      <th>好样本占比</th>\n",
       "      <th>坏样本数</th>\n",
       "      <th>坏样本占比</th>\n",
       "      <th>坏样本率</th>\n",
       "      <th>分档WOE值</th>\n",
       "      <th>分档IV值</th>\n",
       "      <th>指标IV值</th>\n",
       "      <th>LIFT值</th>\n",
       "      <th>坏账改善</th>\n",
       "      <th>累积LIFT值</th>\n",
       "      <th>累积坏账改善</th>\n",
       "      <th>累积好样本数</th>\n",
       "      <th>累积坏样本数</th>\n",
       "      <th>分档KS值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[负无穷 , 624.9255)</td>\n",
       "      <td>508.0000</td>\n",
       "      <td>0.0212</td>\n",
       "      <td>478.0000</td>\n",
       "      <td>0.0203</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0.0800</td>\n",
       "      <td>0.0591</td>\n",
       "      <td>-1.3724</td>\n",
       "      <td>0.0820</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>3.7709</td>\n",
       "      <td>0.0601</td>\n",
       "      <td>3.7709</td>\n",
       "      <td>0.0601</td>\n",
       "      <td>478.0000</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0.0597</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[624.9255 , 668.492)</td>\n",
       "      <td>6466.0000</td>\n",
       "      <td>0.2700</td>\n",
       "      <td>6322.0000</td>\n",
       "      <td>0.2682</td>\n",
       "      <td>144.0000</td>\n",
       "      <td>0.3840</td>\n",
       "      <td>0.0223</td>\n",
       "      <td>-0.3588</td>\n",
       "      <td>0.0415</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>1.4220</td>\n",
       "      <td>0.1561</td>\n",
       "      <td>1.5931</td>\n",
       "      <td>0.2437</td>\n",
       "      <td>6800.0000</td>\n",
       "      <td>174.0000</td>\n",
       "      <td>0.1755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[668.492 , 683.3262)</td>\n",
       "      <td>6310.0000</td>\n",
       "      <td>0.2635</td>\n",
       "      <td>6213.0000</td>\n",
       "      <td>0.2636</td>\n",
       "      <td>97.0000</td>\n",
       "      <td>0.2587</td>\n",
       "      <td>0.0154</td>\n",
       "      <td>0.0189</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.9816</td>\n",
       "      <td>-0.0066</td>\n",
       "      <td>1.3026</td>\n",
       "      <td>0.3771</td>\n",
       "      <td>13013.0000</td>\n",
       "      <td>271.0000</td>\n",
       "      <td>0.1706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[683.3262 , 688.4017)</td>\n",
       "      <td>2200.0000</td>\n",
       "      <td>0.0919</td>\n",
       "      <td>2172.0000</td>\n",
       "      <td>0.0922</td>\n",
       "      <td>28.0000</td>\n",
       "      <td>0.0747</td>\n",
       "      <td>0.0127</td>\n",
       "      <td>0.2104</td>\n",
       "      <td>0.0037</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.8127</td>\n",
       "      <td>-0.0190</td>\n",
       "      <td>1.2330</td>\n",
       "      <td>0.4264</td>\n",
       "      <td>15185.0000</td>\n",
       "      <td>299.0000</td>\n",
       "      <td>0.1531</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[688.4017 , 710.2586)</td>\n",
       "      <td>6493.0000</td>\n",
       "      <td>0.2712</td>\n",
       "      <td>6426.0000</td>\n",
       "      <td>0.2726</td>\n",
       "      <td>67.0000</td>\n",
       "      <td>0.1787</td>\n",
       "      <td>0.0103</td>\n",
       "      <td>0.4226</td>\n",
       "      <td>0.0397</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.6589</td>\n",
       "      <td>-0.1269</td>\n",
       "      <td>1.0634</td>\n",
       "      <td>0.7080</td>\n",
       "      <td>21611.0000</td>\n",
       "      <td>366.0000</td>\n",
       "      <td>0.0591</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>[710.2586 , 正无穷)</td>\n",
       "      <td>1968.0000</td>\n",
       "      <td>0.0822</td>\n",
       "      <td>1959.0000</td>\n",
       "      <td>0.0831</td>\n",
       "      <td>9.0000</td>\n",
       "      <td>0.0240</td>\n",
       "      <td>0.0046</td>\n",
       "      <td>1.2421</td>\n",
       "      <td>0.0734</td>\n",
       "      <td>0.2404</td>\n",
       "      <td>0.2920</td>\n",
       "      <td>-0.0634</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>23570.0000</td>\n",
       "      <td>375.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>score</td>\n",
       "      <td></td>\n",
       "      <td>缺失值</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    指标名称 指标含义                     分箱      样本总数   样本占比      好样本数  好样本占比     坏样本数  坏样本占比   坏样本率  分档WOE值  分档IV值  指标IV值  LIFT值    坏账改善  累积LIFT值  累积坏账改善     累积好样本数   累积坏样本数  分档KS值\n",
       "0  score            [负无穷 , 624.9255)  508.0000 0.0212  478.0000 0.0203  30.0000 0.0800 0.0591 -1.3724 0.0820 0.2404 3.7709  0.0601   3.7709  0.0601   478.0000  30.0000 0.0597\n",
       "1  score        [624.9255 , 668.492) 6466.0000 0.2700 6322.0000 0.2682 144.0000 0.3840 0.0223 -0.3588 0.0415 0.2404 1.4220  0.1561   1.5931  0.2437  6800.0000 174.0000 0.1755\n",
       "2  score        [668.492 , 683.3262) 6310.0000 0.2635 6213.0000 0.2636  97.0000 0.2587 0.0154  0.0189 0.0001 0.2404 0.9816 -0.0066   1.3026  0.3771 13013.0000 271.0000 0.1706\n",
       "3  score       [683.3262 , 688.4017) 2200.0000 0.0919 2172.0000 0.0922  28.0000 0.0747 0.0127  0.2104 0.0037 0.2404 0.8127 -0.0190   1.2330  0.4264 15185.0000 299.0000 0.1531\n",
       "4  score       [688.4017 , 710.2586) 6493.0000 0.2712 6426.0000 0.2726  67.0000 0.1787 0.0103  0.4226 0.0397 0.2404 0.6589 -0.1269   1.0634  0.7080 21611.0000 366.0000 0.0591\n",
       "5  score            [710.2586 , 正无穷) 1968.0000 0.0822 1959.0000 0.0831   9.0000 0.0240 0.0046  1.2421 0.0734 0.2404 0.2920 -0.0634   1.0000  0.0000 23570.0000 375.0000 0.0000\n",
       "6  score                         缺失值    0.0000 0.0000    0.0000 0.0000   0.0000 0.0000 0.0000  0.0000 0.0000 0.0000 0.0000  0.0000   0.0000  0.0000     0.0000   0.0000 0.0000"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_bin_stats(\n",
    "    pd.DataFrame({\"score\": score_transform.transform(best_model.predict(test_select).as_data_frame()[[\"p0\"]])[\"p0\"], \"target\": test_select.as_data_frame()[y]})\n",
    "    , \"score\"\n",
    "    , method=\"mdlp\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "stackedensemble prediction progress: |███████████████████████████████████████████| (done) 100%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>p1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>23945.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>304.6197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.6628</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>300.0038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>303.4987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>304.6367</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>305.7444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>309.0096</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              p1\n",
       "count 23945.0000\n",
       "mean    304.6197\n",
       "std       1.6628\n",
       "min     300.0038\n",
       "25%     303.4987\n",
       "50%     304.6367\n",
       "75%     305.7444\n",
       "max     309.0096"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_transform.transform(best_model.predict(test_select).as_data_frame()[[\"p1\"]]).describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "from abc import abstractmethod\n",
    "import numpy as np\n",
    "from pandas import DataFrame\n",
    "from scipy import stats\n",
    "from sklearn.base import BaseEstimator, TransformerMixin\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.utils import check_array\n",
    "from sklearn.utils.validation import check_is_fitted\n",
    "\n",
    "\n",
    "class BaseScoreTransformer(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self, down_lmt=300, up_lmt=1000, greater_is_better=True, cutoff=None):\n",
    "        self.down_lmt = down_lmt\n",
    "        self.up_lmt = up_lmt\n",
    "        self.greater_is_better = greater_is_better\n",
    "        self.cutoff = cutoff\n",
    "\n",
    "    @abstractmethod\n",
    "    def predict(self, x):\n",
    "        pass\n",
    "\n",
    "\n",
    "class StandardScoreTransformer(BaseScoreTransformer):\n",
    "    \"\"\"Stretch the predicted probability to a normal distributed score.\"\"\"\n",
    "    def __init__(self, score0=660, pdo=75, bad_rate=0.15, down_lmt=300, up_lmt=1000, greater_is_better=True, cutoff=None):\n",
    "        super().__init__(down_lmt=down_lmt, up_lmt=up_lmt, greater_is_better=greater_is_better, cutoff=cutoff)\n",
    "        self.score0 = score0\n",
    "        self.pdo = pdo\n",
    "        self.bad_rate = bad_rate\n",
    "\n",
    "    def fit(self, X, y=None, **fit_params):\n",
    "        self._validate_data(X, reset=True, accept_sparse=False, dtype=\"numeric\", copy=False, force_all_finite=True)\n",
    "\n",
    "        score0, down_lmt, up_lmt = self.score0, self.down_lmt, self.up_lmt\n",
    "        if not down_lmt < score0 < up_lmt:\n",
    "            raise ValueError(\"score0 should be greater than {} and less than {}!\".format(down_lmt, up_lmt))\n",
    "        \n",
    "        bad_rate = self.bad_rate\n",
    "        if not 0.0 < bad_rate < 1.0:\n",
    "            raise ValueError(\"bad rate should be greater than e and less than 1!\")\n",
    "        \n",
    "        odds = bad_rate / (1. - bad_rate)\n",
    "        if self.greater_is_better:\n",
    "            B = self.pdo / np.log(2.0)\n",
    "        else:\n",
    "            B = -self.pdo / np.log(2.0)\n",
    "\n",
    "        A = score0 + B + np.log(odds)\n",
    "\n",
    "        self.A_ = A\n",
    "        self.B_ = B\n",
    "        self.odds_ = odds\n",
    "        return self\n",
    "    \n",
    "    def _transform(self, X):\n",
    "        check_is_fitted(self, [\"A_\", \"B_\"])\n",
    "        Xt = self._validate_data(X, reset=False, accept_sparse=False, dtype=\"numeric\", copy=True, force_all_finite=True)\n",
    "        # if not np.all((0 <= Xt) & (Xt <= 1)):\n",
    "        #     raise ValueError (\"Input should be probabilities between 0 and 1.\")\n",
    "        A, B = self.A_, self.B_\n",
    "        down_lmt, up_lmt = self.down_lmt, self.up_lmt\n",
    "        points =A - B * np.log(Xt / (1.0 - Xt))\n",
    "        points = np.clip(points, down_lmt, up_lmt)\n",
    "        return points\n",
    "\n",
    "    def transform(self, X):\n",
    "        data = self._transform(X)\n",
    "        if isinstance(X, DataFrame):\n",
    "            columns = X.columns\n",
    "            index = X.index\n",
    "            return DataFrame(data=data, columns=columns, index=index)\n",
    "        return data\n",
    "    \n",
    "    def predict(self, X):\n",
    "        scores = np.ravel(self._transform(X))\n",
    "        if self.cutoff is None:\n",
    "            cutoff = self._transform([[0.5]])[0][0]\n",
    "        elif not self.down_lmt < self.cutoff < self.up_lmt:\n",
    "            raise ValueError(\"Cutoff point should be within down_lmt and up_lmt!\")\n",
    "        else:\n",
    "            cutoff = self.cutoff\n",
    "        \n",
    "        if self.greater_is_better:\n",
    "            return (scores < cutoff).astype(np.int)\n",
    "        else:\n",
    "            return (scores > cutoff).astype (np.int)\n",
    "        \n",
    "    def _inverse_transform(self, X):\n",
    "        check_is_fitted(self, [\"A_\", \"B_\"])\n",
    "        Xt = check_array(X, accept_sparse=False, dtype=\"numeric\", copy=True, force_all_finite=True)\n",
    "        down_lmt, up_lmt = self.down_lmt, self.up_lmt\n",
    "        if not np.all(np.logical_and((down_lmt <= Xt), (Xt <= up_lmt))):\n",
    "            raise ValueError(\"Input should be points between {} and {}\".format(down_lmt, up_lmt))\n",
    "        A, B = self.A_, self.B_\n",
    "        probs = 1.0 - 1.0 / (np.exp((A - Xt) / B) + 1.0)\n",
    "        return probs\n",
    "    \n",
    "    def inverse_transform(self, X):\n",
    "        data = self. inverse_transform(X)\n",
    "        if isinstance(X, DataFrame):\n",
    "            columns = X.columns\n",
    "            index = X.index\n",
    "            return DataFrame(data=data, columns=columns, index=index)\n",
    "        return data\n",
    "    \n",
    "    def _more_tags(self):\n",
    "        return {\n",
    "            \"X_types\": [\"2darray\"],\n",
    "            \"allow_nan\": False,\n",
    "        }\n",
    "\n",
    "\n",
    "class NPRoundStandardScoreTransformer(StandardScoreTransformer):\n",
    "    \"\"\"Stretch the predict probability to a normal distributed score.\"\"\"\n",
    "    def __init__(self, score0=660,pdo=75, bad_rate=0.15, down_lmt=300, up_lmt=1000, round_decimals=0, greater_is_better=True, cutoff=None):\n",
    "        self.round_decimals = round_decimals\n",
    "        super(NPRoundStandardScoreTransformer, self).__init__(score0=score0, pdo=pdo, bad_rate=bad_rate, down_lmt=down_lmt, up_lmt=up_lmt,\n",
    "                                                              greater_is_better=greater_is_better, cutoff=cutoff)\n",
    "\n",
    "    def _transform(self, X):\n",
    "        points = super()._transform(X)\n",
    "        decimals = self.round_decimals\n",
    "        points = np.round(points, decimals=decimals)\n",
    "        return points\n",
    "\n",
    "\n",
    "class RoundStandardScoreTransformer(StandardScoreTransformer):\n",
    "    \"\"\"Stretch the predicted probability to a normal distributed score.\"\"\"\n",
    "    def __init__(self, score0=660, pdo=75, bad_rate=0.15, down_lmt=300, up_lmt=1000, round_decimals=0, greater_is_better=True, cutoff=None):\n",
    "        self.round_decimals = round_decimals\n",
    "        super(RoundStandardScoreTransformer, self).__init__(score0=score0, pdo=pdo, bad_rate=bad_rate, down_lmt=down_lmt, up_lmt=up_lmt,\n",
    "                                                            greater_is_better=greater_is_better, cutoff=cutoff)\n",
    "    def _transform(self, X):\n",
    "        points  = super()._transform(X)\n",
    "        decimals = self.round_decimals\n",
    "        points = np.array([[round(x[0], decimals)] for x in points])\n",
    "        return points\n",
    "\n",
    "\n",
    "class BoxCoxScoreTransformer(BaseScoreTransformer):\n",
    "    def __init__(self, down_lmt=300, up_lmt=1000, greater_is_better=True, cutoff=None):\n",
    "        super(BoxCoxScoreTransformer, self).__init__(down_lmt=down_lmt, up_lmt=up_lmt, greater_is_better=greater_is_better, cutoff=cutoff)\n",
    "    \n",
    "    def _box_cox_optimize(self, x):\n",
    "        \"\"\"Find and return optimal lambda parameter of the Box-Cox transform by MLE, for observed data x.\n",
    "\n",
    "        We here use scipy builtins which uses the brent optimizer.\n",
    "        \"\"\"\n",
    "        # the computation of Lambda is influenced by NaNs so we need to get rid of them\n",
    "        _, lmbda = stats.boxcox(x, lmbda=None)\n",
    "        return lmbda\n",
    "\n",
    "    def fit(self, X, y=None, **fit_params):\n",
    "        X = check_array(X, accept_sparse=False, dtype=\"numeric\", copy=True, force_all_finite=True)\n",
    "        if np.min(X) <= 0 or np.max(X) >= 1:\n",
    "            raise ValueError(\"The Box-Cox score transformation can only be applied to strictly positive probabilities\")\n",
    "        if self.greater_is_better:\n",
    "            self.lambdas_ = np.array([self._box_cox_optimize(1.0 - col) for col in X.T])\n",
    "        else:\n",
    "            self.lambdas_ = np.array([self._box_cox_optimize(col) for col in X.T])\n",
    "        for i, lmbda in enumerate(self.lambdas_) :\n",
    "            X[:, i] = stats.boxcox(X[:, i], lmbda)\n",
    "        self.scaler_ = MinMaxScaler(feature_range=(self.down_lmt, self.up_lmt)).fit(X)\n",
    "        return self\n",
    "\n",
    "    def _transform(self, X):\n",
    "        check_is_fitted(self, [\"lambdas_\", \"scaler_\"])\n",
    "        X = check_array(X, accept_sparse=False, dtype=\"numeric\", copy=True, force_all_finite=True)\n",
    "        if np.min(X) < 0 or np.max(X) > 1:\n",
    "            raise ValueError(\"The Box-Cox score transformation can only be applied to strictly positive probabilities\")\n",
    "        if self.greater_is_better:\n",
    "            X = 1.0 - X\n",
    "        for i, lmbda in enumerate(self.lambdas_):\n",
    "            X[:, i]= stats.boxcox(X[:, i], lmbda)\n",
    "        return self.scaler_.transform(X)\n",
    "\n",
    "    def transform(self, X):\n",
    "        data = self._transform(X)\n",
    "        if isinstance(X, DataFrame):\n",
    "            columns = X.columns\n",
    "            index = X.index\n",
    "            return DataFrame(data=data, index=index, columns=columns)\n",
    "        return data\n",
    "    \n",
    "    def predict(self, X):\n",
    "        scores = np.ravel(self._transform(X))\n",
    "        if self.cutoff is None:\n",
    "            lmbda = self.lambdas_[0]\n",
    "            if lmbda != 0:\n",
    "                p = (0.5 ** lmbda - 1) / lmbda\n",
    "            else:\n",
    "                p = np.log(0.5)\n",
    "            scaler = self.scaler_\n",
    "            p *= scaler.scale_\n",
    "            p += scaler.min_\n",
    "            if scaler.clip:\n",
    "                if p < scaler.feature_range[0]:\n",
    "                    p = scaler.feature_range[0]\n",
    "                elif p > scaler.feature_range[1]:\n",
    "                    p = scaler.feature_range[1]\n",
    "            cutoff = p\n",
    "        elif not self.down_lmt < self.cutoff < self.up_lmt:\n",
    "            raise ValueError(\"Cutoff point should be within 'down_lmt' and 'up_lmt'!\")\n",
    "        else:\n",
    "            cutoff = self.cutoff\n",
    "        if self.greater_is_better:\n",
    "            return (scores < cutoff).astype(np.int)\n",
    "        else:\n",
    "            return (scores > cutoff).astype(np.int)\n",
    "\n",
    "    def _inverse_transform(self, X):\n",
    "        check_is_fitted(self, [\"lambdas_\", \"scaler_\"])\n",
    "        X = check_array(X, accept_sparse=False, dtype=\"numeric\", copy=True, force_all_finite=True)\n",
    "        if np.min(X) < self.down_lmt or np.max(X) > self.up_lmt:\n",
    "            raise ValueError(\"The Box-Cox score inverse transformation can only be applied to strictly bounded scores\")\n",
    "        X_inv = self.scaler_.inverse_transform(X)\n",
    "        for i, lmbda in enumerate(self.lambdas ):\n",
    "            X_inv[:, i] = self._box_cox_inverse_tranform(X_inv[:, i], lmbda)\n",
    "        return X_inv\n",
    "\n",
    "    def inverse_transform(self, X):\n",
    "        data = self._inverse_transform(X)\n",
    "        if isinstance(X, DataFrame):\n",
    "            columns = X.columns\n",
    "            index = X.index\n",
    "            return DataFrame(data=data, index=index, columns=columns)\n",
    "        return data\n",
    "\n",
    "    def _box_cox_inverse_tranform(self, x, lmbda):\n",
    "        \"\"\"Return inverse-transformed input x following Box-Cox inverse transform with parameter lambda\"\"\"\n",
    "        if lmbda == 0:\n",
    "            x_inv = np.exp(x)\n",
    "        else:\n",
    "            x_inv = (x * lmbda + 1) ** (1 / lmbda)\n",
    "\n",
    "        return x_inv"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
